垂直合并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】:

如果您不想按原样使用索引值,可以使用appendignore_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个数据框[重复]的主要内容,如果未能解决你的问题,请参考以下文章

基于公共列合并多个数据框[重复]

有效地合并熊猫中的多个数据框[重复]

如何在 R 中合并同一数据框中的行(基于特定列下的重复值)?

Python合并两个具有不同日期时间的数据框[重复]

如何在Python中合并字典中的所有数据框[重复]

合并数据框中的行[重复]