使用Python(或Bash)合并CSV

时间:2015-05-29 11:40:17

标签: bash python-2.7 csv merge

我在一个文件夹中有一组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

提前致谢

迈克尔

1 个答案:

答案 0 :(得分:1)

在python中,您可以使用允许从csv填充数据帧的pandas模块,合并数据帧,然后将合并的数据帧保存到新的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参数来适应您的文件格式。