使用 Python(或 Bash)合并 CSV

Merge CSVs using Python (or Bash)

我在一个文件夹中有一组 CSV 文件,我想将它们合并为一个 "super-csv"。有些列在所有文件中都可用,有些则不可用。

输出中的字段应该只是空的,如果它在源中不可用的话。如果列名在多个 CSV 中相同,则应填充现有列(示例中的名称)

File1.CSV

ID        Name       ContactNo
53        Vikas      9874563210

File2.CSV

ID     Name          Designation
23    MyShore    Software Engineer

预期输出

ID        Name          ContactNo           Designation 
53        Vikas         9874563210
23        MyShore                          Software Engineer

我已经尝试过其他解决方案,但它们无法处理空字段。例如。 merge csv files with different column order remove duplicates

提前致谢

迈克尔

在 python 中,您可以使用 pandas 模块,该模块允许从 csv 填充数据框,合并数据框,然后将合并的数据框保存到新的 csv 文件中。

例如:

import pandas as pd
df1 = pd.DataFrame.from_csv("file1.csv", sep=",")
df2 = pd.DataFrame.from_csv("file2.csv", sep=",")
final_df = df1.reset_index().merge(df2.reset_index(), how="outer").set_index('ID')

final_df.to_csv("result.csv", sep=",")

会产生

ID,Name,ContactNo,Designation
53,Vikas,9874563210.0, 
23,MyShore,,Software Engineer 

您将不得不使用 sep 参数来适应您的文件格式。