垂直合并2个数据框[重复]
Posted
技术标签:
【中文标题】垂直合并2个数据框[重复]【英文标题】:merging 2 dataframes vertically [duplicate] 【发布时间】:2017-05-02 02:18:01 【问题描述】:我有 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
【问题讨论】:
你要pd.concat([df1,df2])
,这是一个很常见的问题,见docs,相关:***.com/questions/11637384/…和***.com/questions/15819050/…
我忘了说concat返回:TypeError: first argument must be an iterable of pandas objects, you pass a object of type "DataFrame"
当您传递how='left'
时,这只会水平合并lhs 上那些列中的值,不清楚您真正想要什么。您可以尝试传递“外部”
【参考方案1】:
如果您不想按原样使用索引值,可以使用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
【讨论】:
追加比合并花费的时间更少。 如果我想垂直连接两个以上的数据帧,我还能用这个吗?以上是关于垂直合并2个数据框[重复]的主要内容,如果未能解决你的问题,请参考以下文章