2016-12-16 107 views
-2

我有2個數據幀,每個數據幀有2列(相同的列名稱)。我想將它們垂直合併,最終得到一個新的數據框。垂直合併2個數據幀

在做

newdf = df.merge(df1,how='left',on=['Col1','Col2']) 

新的DF只有從df行和無行從df1。任何可能發生這種情況的原因?

Col1 Col2 
asd  1232 
cac  2324 
..... 

df1是:

Col1 Col2 
afaf 1213 
asas 4353 

新的數據幀newdf應該是:

Col1 Col2 
asd  1232 
cac  2324 
afaf 1213 
asas 4353 
+0

'pd.concat([DF1,DF2])',這是一個很常見的問題,請參見[文檔](HTTP://大熊貓。 pydata.org/pandas-docs/stable/merging.html),相關:http://stackoverflow.com/questions/11637384/pandas-join-merge-concat-two-dataframes和http://stackoverflow.com/questions/15819050/pandas-dataframe-concat-vs-append – EdChum

+0

我忘記提及concat返回:TypeError:第一個參數必須是pandas對象的迭代,當您傳遞'how ='時,您傳遞了一個類型爲「DataFrame」的對象 –

+0

這只是合併的橫向對於lhs的那些專欄中的價值觀,目前還不清楚你真正想要什麼。你可以嘗試傳遞'outer' – EdChum

回答

3

你可以使用append和使用ignore_index如果你不想使用索引值是。

In [14]: df1.append(df2) 
Out[14]: 
    Col1 Col2 
0 asd 1232 
1 cac 2324 
0 afaf 1213 
1 asas 4353 

In [15]: df1.append(df2, ignore_index=True) 
Out[15]: 
    Col1 Col2 
0 asd 1232 
1 cac 2324 
2 afaf 1213 
3 asas 4353 

或使用pd.concat

In [16]: pd.concat([df1, df2]) 
Out[16]: 
    Col1 Col2 
0 asd 1232 
1 cac 2324 
0 afaf 1213 
1 asas 4353 

In [17]: pd.concat([df1, df2], ignore_index=True) 
Out[17]: 
    Col1 Col2 
0 asd 1232 
1 cac 2324 
2 afaf 1213 
3 asas 4353 
你想