2017-03-31 61 views
0

合併在一個字典一個數據幀與另一數據幀我有一個目前看起來像這樣的字典:在Python

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本字典等的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異常:只能比較相同標記的一系列對象

嘗試閱讀thie錯誤,但不知道如何這是適用於此,任何想法可以做什麼來克服這個錯誤或另一種方法做

+2

'dict'和'.merge'不會導致這個錯誤。該消息對於這個問題非常清楚,您正在比較的系列('append.Desc == df.Desc')沒有相同的標籤索引。您是否嘗試使用Google搜尋錯誤? –

回答

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 

+0

在我的情況下,實際上並不工作,因爲我試圖在字典中添加DF的列。 – sg91

0

如何合併兩個descSeries_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)