Pandas DataFrame 合并并求和列
我正在尝试把两个DataFrames
合并,并且在合并的时候把某些列的数值相加。
>>> print(df1)
id name weight
0 1 A 0
1 2 B 10
2 3 C 10
>>> print(df2)
id name weight
0 2 B 15
1 3 C 10
我需要在合并时,对共同列中相似的值的weight
进行求和。
merge = pd.merge(df1, df2, how='inner')
所以输出的结果会像下面这样。
id name weight
1 2 B 25
2 3 C 20
3 个回答
25
如果你把两个数据表中共有的列设置为索引,那么你就可以直接把这两个数据表相加,这样比合并要简单得多。
In [30]: df1 = df1.set_index(['id', 'name'])
In [31]: df2 = df2.set_index(['id', 'name'])
In [32]: df1 + df2
Out[32]:
weight
id name
1 A NaN
2 B 25
3 C 20
55
这个方法也适用于你想要对多个列进行求和的情况。假设有数据框
>>> df1
id name weight height
0 1 A 0 5
1 2 B 10 10
2 3 C 10 15
>>> df2
id name weight height
0 2 B 25 20
1 3 C 20 30
你可以把它们连接起来,然后按照索引列进行分组。
>>> pd.concat([df1, df2]).groupby(['id', 'name']).sum().reset_index()
id name weight height
0 1 A 0 5
1 2 B 35 30
2 3 C 30 45
26
In [41]: pd.merge(df1, df2, on=['id', 'name']).set_index(['id', 'name']).sum(axis=1)
Out[41]:
id name
2 B 25
3 C 20
dtype: int64
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。