Untitled

 avatar
unknown
plain_text
a month ago
1.4 kB
5
Indexable
import csv

old_data_path = "path_to_old_data.csv"
new_data_path = "path_to_new_data.csv"
output_path = "combined_table_data.csv"

with open(old_data_path, "r") as old_file, open(new_data_path, "r") as new_file:
    old_reader = list(csv.DictReader(old_file))
    new_reader = list(csv.DictReader(new_file))

    old_headers = old_reader[0].keys()
    new_headers = new_reader[0].keys()

    combined_headers = list(old_headers) + [header for header in new_headers if header != "TABLE_NAME"]

    old_table_map = {row["TABLE_NAME"]: row for row in old_reader}
    new_table_map = {row["TABLE_NAME"]: row for row in new_reader}

    all_table_names = set(old_table_map.keys()).union(new_table_map.keys())

    combined_data = []
    for table_name in sorted(all_table_names):
        old_row = old_table_map.get(table_name, {header: "Not Found" for header in old_headers})
        new_row = new_table_map.get(table_name, {header: "Not Found" for header in new_headers})
        combined_row = {**old_row, **{key: new_row[key] for key in new_headers if key != "TABLE_NAME"}}
        combined_data.append(combined_row)

with open(output_path, "w", newline="") as output_file:
    writer = csv.DictWriter(output_file, fieldnames=combined_headers)
    writer.writeheader()
    writer.writerows(combined_data)

print(f"Combined data saved to: {output_path}")
Editor is loading...
Leave a Comment