将多个数据帧合并为python中的单个数据帧

问题描述 投票:0回答:2

我有以下四个数据帧

df = pd.DataFrame({_id:[1,2,3,4], name:[Charan, Kumar, Nikhil, Kumar], })

df1 = pd.DataFrame({_id:[1,3,4], count_of_apple:[5,3,1]})


df2 = pd.DataFrame({_id:[1,2,3], count_of_organge:[8,4,6]})


df3 = pd.DataFrame({_id:[2,3,4], count_of_lime:[7,9,2]})

我想将所有数据帧合并为一个称为最终的单个数据帧

我尝试过使用PD.merge,但问题是我必须在3次不同的时间进行操作,是否有更简单的方法?

我使用下面的代码获得结果

final = pd.merge(df, df1, on='_id', how='left')


final = pd.merge(final, df2, on='_id', how='left')


final = pd.merge(final, df3, on='_id', how='left')

我希望最终结果是这样的

final.head()

_ id |名称|橙色数|苹果数|石灰数

1 |查兰| 5 | 8 | Na

2 |库玛|娜| 4 | 7

3 | Nikhil | 3 | 6 | 9

4 |库玛| 1 |娜| 2

python pandas dataframe merge
2个回答
0
投票
来自文档https://pandas.pydata.org/pandas-docs/stable/user_guide/merging.html

In [1]: df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'], ...: 'B': ['B0', 'B1', 'B2', 'B3'], ...: 'C': ['C0', 'C1', 'C2', 'C3'], ...: 'D': ['D0', 'D1', 'D2', 'D3']}, ...: index=[0, 1, 2, 3]) ...: In [8]: df4 = pd.DataFrame({'B': ['B2', 'B3', 'B6', 'B7'], ...: 'D': ['D2', 'D3', 'D6', 'D7'], ...: 'F': ['F2', 'F3', 'F6', 'F7']}, ...: index=[2, 3, 6, 7]) ...: In [9]: result = pd.concat([df1, df4], axis=1, sort=False)

输出:enter image description here

0
投票
您可以使用concat,但首先需要通过concat_id转换为每个DataFrame的索引:

DataFrame.set_index

什么是一样的:

DataFrame.set_index


dfs = [df, df1, df2, df3] df = pd.concat([x.set_index('_id') for x in dfs], axis=1).reset_index()
© www.soinside.com 2019 - 2024. All rights reserved.