Python Pandas 如何根据相似的列加入 2 个或更多数据框

标签 python pandas

您好,我想根据一列将 2 个或更多数据框连接在一起让我们说“id” 该列具有相似和不同的 ID,但我想将它们连接/合并/连接/附加在一起,以便它们都在一个大数据框中. 这是一个例子:

Df1:
id col1 col2
1  
2
4
5

Df2: 
id col3 col4
1
2
3
5

这就是我想要的:

Df3:
Id col1 col2 col3 col4
1
2
3
4
5

最佳答案

假设除了 id 列之外没有其他列重叠,您可以合并它们。

df1 = pd.DataFrame({'id': [1, 2, 4, 5], 'col1': list('ABCD'), 'col2': list('EFGH')})
df2 = pd.DataFrame({'id': [1, 2, 3, 5], 'col3': list('ABCD'), 'col4': list('EFGH')})

>>> df1.merge(df2, how='outer', on='id').set_index('id').sort_index()
   col1 col2 col3 col4
id                    
1     A    E    A    E
2     B    F    B    F
3   NaN  NaN    C    G
4     C    G  NaN  NaN
5     D    H    D    H

请注意,在您的示例中,串联不起作用:

>>> pd.concat([df1, df2], axis=1)
  col1 col2  id col3 col4  id
0    A    E   1    A    E   1
1    B    F   2    B    F   2
2    C    G   4    C    G   3
3    D    H   5    D    H   5

如果在使用 concat 之前先设置索引,则可以合并数据帧。这是多个数据帧的通用解决方案:

dfs = (df1, df2)  # Add other dataframes as required.
>>> pd.concat([df.set_index('id') for df in dfs], axis=1)
   col1 col2 col3 col4
id                    
1     A    E    A    E
2     B    F    B    F
3   NaN  NaN    C    G
4     C    G  NaN  NaN
5     D    H    D    H

请注意,如果您的数据框中有重叠的列(例如 col2),您最终会使用 pd.concat 得到这样的结果:

   col1 col2 col2 col4
id                    
1     A    E    A    E
2     B    F    B    F
3   NaN  NaN    C    G
4     C    G  NaN  NaN
5     D    H    D    H

关于Python Pandas 如何根据相似的列加入 2 个或更多数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51644572/

相关文章:

python - 如何显示每个用户对用户对话的最后一条消息以保留聊天记录?

python - 在 python 脚本之间传递变量

python - 从基于文件的列和行中的最大值中删除重复项 -pandas

python - pandas 为返回的答案找到对应的行值

python - 试图理解 python,为什么这个函数不起作用? [添加公式]

python - 在 OS X 10.7 (Lion) 上使用 scipy 颜色和 imsave

python - 当 Web 后端不仅仅是简单地回复请求时,我的应用程序应该如何构建?

python - 保留最大绝对值并返回具有重复索引的行的平均值

python - 仅在数据框中填充缺失值( Pandas )

python - 在两个数据框列之间执行计算的最快方法?