使用 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
参数来适应您的文件格式。
我在一个文件夹中有一组 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
参数来适应您的文件格式。