我有一个dict,目前看起来像这样:
raw_data = {'Series_Date':['2017-03-10','2017-03-10','2017-03-10','2017-03-13','2017-03-13','2017-03-13'],'Value':[1,1,1,1,1,1],'Type':['SP','1M','3M','SP','1M','3M'],'Desc':['Check SP','Check 1M','Check 3M','Check SP','Check 1M','Check 3M']}
import pandas as pd
df1= pd.DataFrame(raw_data,columns=['Series_Date','Value','Type','Desc'])
dict = {}
dict = {'Check':df1}
print dict
我试图将附加的df附加到此dict的df元素,例如:
appended_data = {'Series_Date':['2017-03-13','2017-03-13','2017-03-13'],'Value':[1,1,1],'Type':['SP','1M','3M'],'Desc':['Check SP','Check 1M','Check 3M']}
import pandas as pd
appended = pd.DataFrame(appended_data,columns=['Series_Date','Value','Type','Desc'])
print appended
adfs = {k:df.merge(appended[appended.Desc==df.Desc],on=['Series_Date'],how='left',suffixes=['','_Appended']) for (k,df) in dict.items()}
但是,在运行此merge语句时,我收到以下错误:ValueError:只能比较带有相同标记的Series对象
尝试阅读这个错误,但不确定它是如何适用的,任何想法可以做些什么来克服这个错误,或者另一种做法
答案 0 :(得分:0)
使用' pd.concat' 可以在这里完成工作。
import pandas as pd
raw_data = {'Series_Date':['2017-03-10','2017-03-10','2017-03-10','2017-03-13','2017-03-13','2017-03-13'],'Value':[1,1,1,1,1,1],'Type':['SP','1M','3M','SP','1M','3M'],'Desc':['Check SP','Check 1M','Check 3M','Check SP','Check 1M','Check 3M']}
df1= pd.DataFrame(raw_data,columns=['Series_Date','Value','Type','Desc'])
print 'df1:\n', df1
appended_data = {'Series_Date':['2017-03-13','2017-03-13','2017-03-13'],'Value':[1,1,1],'Type':['SP','1M','3M'],'Desc':['Check SP','Check 1M','Check 3M']}
appended = pd.DataFrame(appended_data,columns=['Series_Date','Value','Type','Desc'])
print 'appended\n:',appended
df_concat =pd.concat([appended,df1],axis=0)
print 'concat\n:',df_concat
结果如下:
df1: Series_Date Value Type Desc 0 2017-03-10 1 SP Check SP 1 2017-03-10 1 1M Check 1M 2 2017-03-10 1 3M Check 3M 3 2017-03-13 1 SP Check SP 4 2017-03-13 1 1M Check 1M 5 2017-03-13 1 3M Check 3M appended : Series_Date Value Type Desc 0 2017-03-13 1 SP Check SP 1 2017-03-13 1 1M Check 1M 2 2017-03-13 1 3M Check 3M concat : Series_Date Value Type Desc 0 2017-03-13 1 SP Check SP 1 2017-03-13 1 1M Check 1M 2 2017-03-13 1 3M Check 3M 0 2017-03-10 1 SP Check SP 1 2017-03-10 1 1M Check 1M 2 2017-03-10 1 3M Check 3M 3 2017-03-13 1 SP Check SP 4 2017-03-13 1 1M Check 1M 5 2017-03-13 1 3M Check 3M
答案 1 :(得分:0)
如何合并desc
和Series_date
adfs = {k:df.merge(appended,on=['Desc' , 'Series_Date'], how='left',suffixes=['','_Appended']) for (k,df) in dict.items()}
像appended.Desc == df.Desc
这样的陈述是有问题的,因为这些系列的形状不同。您可以尝试isin
,例如appended.Desc.isin(df.Desc)
。