【发布时间】:2019-06-13 21:16:49
【问题描述】:
我使用 pd.merge 合并了两个单独的 csv 文件。结果如下所示:
基本上我想在每种情况下删除区域列并将其替换为列的名称,我想要的结果如下所示:
我当前用于合并 csv 文件并将结算日期向左移动的代码是这样的:
import pandas as pd
data1 = pd.read_csv("QLD.csv")
data2 = pd.read_csv("VIC.csv")
result = pd.merge(data1[['REGION', 'TOTALDEMAND', 'RRP','SETTLEMENTDATE']], data2[['REGION', 'TOTALDEMAND', 'RRP','SETTLEMENTDATE']], on='SETTLEMENTDATE')
cols = result.columns.tolist()
cols.insert(0, cols.pop(cols.index('SETTLEMENTDATE')))
result = result.reindex(columns= cols)
result.to_csv("masterfile.csv", index=False)
我的问题是如何修改我的代码以达到我想要的结果?
错误:
Traceback (most recent call last):
File "/Users/george/Desktop/collate/merge pdf.py", line 9, in <module>
result.columns=['SETTLEMENTDATE','QLD DEMAND','QLD RRP','VLC DEMAND','VLC RRP']
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/core/generic.py", line 4389, in __setattr__
return object.__setattr__(self, name, value)
File "pandas/_libs/properties.pyx", line 69, in pandas._libs.properties.AxisProperty.__set__
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/core/generic.py", line 646, in _set_axis
self._data.set_axis(axis, labels)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/core/internals.py", line 3323, in set_axis
'values have {new} elements'.format(old=old_len, new=new_len))
ValueError: Length mismatch: Expected axis has 6 elements, new values have 5 elements
编辑1:
import pandas as pd
data1 = pd.read_csv("QLD.csv")
data2 = pd.read_csv("VIC.csv")
result = pd.merge(data1[['REGION', 'TOTALDEMAND', 'RRP','SETTLEMENTDATE']], data2[['REGION', 'TOTALDEMAND', 'RRP','SETTLEMENTDATE']], on='SETTLEMENTDATE')
cols = result.columns.tolist()
cols.insert(0, cols.pop(cols.index('SETTLEMENTDATE')))
result = result.reindex(columns= cols)
result = result.drop(result.columns[[1, 4]], axis=1)
result = result.rename(columns={'SETTLEMENTDATE': 'SETTLEMENTDATE', 'TOTALDEMAND_x':
'QLD DEMAND','RRP_x':'QLD RRP','TOTALDEMAND_x':'VIC DEMAND','RRP_y':'VIC RRP'})
result.to_csv("masterfile.csv", index=False)
Excel 文件:
谢谢!
【问题讨论】: