我有两个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)
脚本已正确完成。
如果一个文件中有一个日期条目,而另一个文件中没有日期条目,此脚本是否可以继续工作?
答案 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,