2017-05-08 30 views
2

假設我有兩個dataframes X和Y:如何將兩個合併兩個dataframes沒有任何指標是基於

import pandas as pd 
X = pd.DataFrame({'A':[1,4,7],'B':[2,5,8],'C':[3,6,9]}) 
Y = pd.DataFrame({'D':[1],'E':[11]}) 


In [4]: X 
Out[4]: 
    A B C 
0 1 2 3 
1 4 5 6 
2 7 8 9 
In [6]: Y 
Out[6]: 
    D E 
0 1 11 

,然後,我希望得到以下結果數據框:

A B C D E 
0 1 2 3 1 11 
1 4 5 6 1 11 
2 7 8 9 1 11 

怎麼樣?

回答

3

假設Y只包含一行:

In [9]: X.assign(**Y.to_dict('r')[0]) 
Out[9]: 
    A B C D E 
0 1 2 3 1 11 
1 4 5 6 1 11 
2 7 8 9 1 11 

或從@piRSquared一個好得多的替代:

In [27]: X.assign(**Y.iloc[0]) 
Out[27]: 
    A B C D E 
0 1 2 3 1 11 
1 4 5 6 1 11 
2 7 8 9 1 11 

助手字典:

In [10]: Y.to_dict('r')[0] 
Out[10]: {'D': 1, 'E': 11} 
+1

輝煌的答案! – piRSquared

+0

@piRSquared,謝謝!欣賞它 – MaxU

+0

它確實有幫助!但你介意更清楚地解釋一下嗎?我不明白這是怎麼發生的。謝謝。是什麼 '**' ? – Husy

1

這裏是另一種方式

Y2 = pd.concat([Y]*3, ignore_index = True)#此複製行

哪個生產:

D E 
0 1 11 
0 1 11 
0 1 11 

然後CONCAT再次聲明:

pd.concat([X,Y2], axis =1) 



    A B C D E 
0 1 2 3 1 11 
1 4 5 6 1 11 
2 7 8 9 1 11