使用python和pandas合并csv列

时间:2018-06-21 20:50:27

标签: python pandas csv

我有两个csv数据文件。 PV.csv具有这样的行:

date,PVkW
2018/03/05 11:00,887.4
2018/03/05 12:00,940.9
2018/03/05 13:00,927.2
2018/03/05 14:00,845.9
2018/03/05 15:00,683.0
2018/03/05 16:00,423.1
2018/03/05 17:00,186.4

和TBL.csv,其行如下:

date,TBLkW
2018/03/05 11:00,277.01953
2018/03/05 12:00,285.30783
2018/03/05 13:00,236.8461
2018/03/05 14:00,243.26564
2018/03/05 15:00,274.98438
2018/03/05 16:00,255.20079
2018/03/05 17:00,262.28046

我正在使用下面的脚本来获取一个包含条目datePVkW,TBLkW的文件,但是我所得到的只是datePVkW的副本。我想念什么?

import pandas as pd

a = pd.read_csv('PV.csv')
b = pd.read_csv('TBL.csv')
b = b.dropna(axis=1)
merged = a.merge(b, on='date')
merged.to_csv("combined.csv", index=False)

脚本已正确完成。

如果一个文件中有一个日期条目,而另一个文件中没有日期条目,此脚本是否可以继续工作?

1 个答案:

答案 0 :(得分:0)

pandas.merge的默认模式是“内部”,它将采用两个列表的交集。因此,您的脚本工作将继续进行,如果一个文件具有一个日期条目,而另一个没有,那么如果您希望结果文件包含所有数据,则应继续使用“外部”模式。

此处有更多信息:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.merge.html

例如,使用PV.csv:

date,PVkW
2018/03/05 11:00,887.4
2018/03/05 12:00,940.9
2018/03/05 13:00,927.2
2018/03/05 14:00,845.9
2018/03/05 15:00,683.0
2018/03/05 16:00,423.1
2018/03/05 17:00,186.4
2018/03/05 18:00,186.4

TBL.csv:

date,TBLkW
2018/03/05 11:00,277.01953
2018/03/05 12:00,285.30783
2018/03/05 13:00,236.8461
2018/03/05 14:00,243.26564
2018/03/05 15:00,274.98438
2018/03/05 16:00,255.20079
2018/03/05 17:00,262.28046

这个脚本:

import pandas as pd

a = pd.read_csv('PV.csv')
b = pd.read_csv('TBL.csv')
b = b.dropna(axis=1)
merged = a.merge(b, how='outer', on='date')
merged.to_csv("combined.csv", index=False)

您得到了:

date,PVkW,TBLkW
2018/03/05 11:00,887.4,277.01953
2018/03/05 12:00,940.9,285.30782999999997
2018/03/05 13:00,927.2,236.8461
2018/03/05 14:00,845.9,243.26564
2018/03/05 15:00,683.0,274.98438
2018/03/05 16:00,423.1,255.20078999999998
2018/03/05 17:00,186.4,262.28046
2018/03/05 18:00,186.4,