合并两个pandas数据帧并跳过righ的公共列

2024-04-20 11:23:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用pandas DataFrame作为一个轻量级数据集来维护一些状态,并且需要动态/连续地将新的数据帧合并到现有的表中。假设我有两个数据集,如下所示:

df1:

   a  b
0  0  1
1  2  3
2  4  5
3  6  7
4  8  9

df2:

^{pr2}$

我想将df2合并到df1(在索引上),对于公共列(在本例中是“b”),只需丢弃df2的公共列。在

   a  b   c
0  0  1  11
1  2  3  13
2  4  5  15
3  6  7  17
4  8  9  19

我的代码是使用SET检查df1和df2之间的公共部分,所以我手动删除df2中的公共部分。我想知道有没有什么有效的方法可以做到这一点?在


Tags: 数据方法代码dataframepandas状态动态手动
2条回答

首先标识df2中的列而不是df1中的列

cols = df2.columns.difference(df1.columns)

然后pd.DataFrame.join

^{pr2}$

或者pd.concat也可以

pd.concat([df1, df2[cols]], axis=1)

   a  b   c
0  0  1  11
1  2  3  13
2  4  5  15
3  6  7  17
4  8  9  19

熊猫融合功能也将创造奇迹。你可以这样做:

pd.merge(left=df1, right=df2, how='inner')

   a  b   c
0  0  1  11
1  2  3  13
2  4  5  15
3  6  7  17
4  8  9  19

通过消除merge函数的“on”属性,它将考虑两个数据帧中相同的列。在

相关问题 更多 >