\(\newcommand{\B}[1]{ {\bf #1} }\) \(\newcommand{\R}[1]{ {\rm #1} }\)
csv.join_file_xam¶
View page sourceExample Joining Two CSV Tables¶
Example Source Code¶
#
# import at_cascade with a preference current directory version
current_directory = os.getcwd()
if os.path.isfile( current_directory + '/at_cascade/__init__.py' ) :
sys.path.insert(0, current_directory)
import at_cascade
#
def main() :
#
# result_dir
result_dir = 'build/example/csv'
at_cascade.empty_directory(result_dir)
#
# left_file
left_file = 'build/example/csv/left_file.csv'
left_table = [
{ 'age' : '40', 'time' : '2000', 'sex' : 'female' },
{ 'age' : '50', 'time' : '2000', 'sex' : 'female' },
{ 'age' : '60', 'time' : '2000', 'sex' : 'female' },
]
at_cascade.csv.write_table(left_file, left_table)
#
# right_file
right_file = 'build/example/csv/right_file.csv'
right_table = [
{ 'meas_value' : '1.0', 'sex' : 'female' },
{ 'meas_value' : '2.0', 'sex' : 'both' },
{ 'meas_value' : '2.0', 'sex' : 'male' },
]
at_cascade.csv.write_table(right_file, right_table)
#
# result_file
result_file = 'build/example/csv/result_file.csv'
at_cascade.csv.join_file(left_file, right_file, result_file)
#
# result_table
result_table = at_cascade.csv.read_table(result_file)
#
# check
assert len(result_table) == len(left_table)
assert list( result_table[0].keys() ) == \
[ 'age', 'time', 'sex', 'meas_value' ]
for index in range( len(left_table) ) :
left_row = left_table[index]
right_row = right_table[index]
result_row = result_table[index]
for key in result_row :
if key in right_row :
assert result_row[key] == right_row[key]
else :
assert result_row[key] == left_row[key]
#
#
# Without this, the mac will try to execute main on each processor.
if __name__ == '__main__' :
main()
print('csv_join_file_xam: OK')