Python - 如何连接多个共享相似数据的csv文件,但是在其他列中?

时间:2018-02-23 17:22:35

标签: python pandas csv

我需要将多个.csv文件合并为一个,它们共享大多数第一列功能,但第二列包含变量,这些变量在不同文件之间变化。我的挣扎:我想这样做,所以每次我写上第一列都会更新(附加?),第二列的功能分配给第一列,并且还添加到新列上。

示例:

Dataset1.csv 

plane1,100
plane2,100
plane3,400
plane5,600
plane4,700

Dataset2.csv

plane1,150
plane3,100
plane4,300

Dataset3.csv

plane3,300
plane4,250
plane6,180

我希望他们最终成为:

output.csv

plane1,100,150,-
plane2,100,-,-,-
plane3,400,100,300
plane4,700,300,250
plane5,600,-,-
plane6,-,-,180

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

假设你有3个数据帧。

DF1:

df1 = pd.DataFrame({'plane':['plane1','plane2','plane3','plane4','plane5'],
                  'value':[100,100,400,600,700]})

输出:

    plane   value
0   plane1  100
1   plane2  100
2   plane3  400
3   plane4  600
4   plane5  700

DF2:

df2 = pd.DataFrame({'plane':['plane1','plane3','plane4'],
                  'value':[150,100,300]})

输出:

    plane   value
0   plane1  150
1   plane3  100
2   plane4  300

DF3:

df3 = pd.DataFrame({'plane':['plane3','plane4','plane6'],
                  'value':[300,250,180]})

输出:

    plane   value
0   plane3  300
1   plane4  250
2   plane6  180

执行命令

mid_res = pd.merge(df1,df2,how='outer',on='plane') 
result = pd.merge(mid_res,df3,how='outer',on='plane')

输出:

    plane   value_x value_y value
0   plane1  100.0   150.0   NaN
1   plane2  100.0   NaN     NaN
2   plane3  400.0   100.0   300.0
3   plane4  600.0   300.0   250.0
4   plane5  700.0   NaN     NaN
5   plane6  NaN     NaN     180.0

如果您希望NaN显示为" - "。运行:

result = result.fillna('-')

得到:

    plane   value_x value_y value
0   plane1  100     150     -
1   plane2  100     -       -
2   plane3  400     100     300
3   plane4  600     300     250
4   plane5  700     -       -
5   plane6  -       -       180

现在您可以导出CSV文件:

result.to_csv('result.csv')

concat解决方案适用于列' plane'中的值。是独一无二的。

如果这回答了您的问题,请投票。