您好,我想根据一列将 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/