Nil*_*age 15 python dataframe pandas
我正在尝试合并两个DataFrames求和列值.
DF1
id name weight
1 A 0
2 B 10
3 C 10
Run Code Online (Sandbox Code Playgroud)
DF2
id name weight
2 B 15
3 C 10
Run Code Online (Sandbox Code Playgroud)
我需要在合并期间对公共列中的类似值求和权重值.
merge = pd.merge(df1,df2, how='inner')
Run Code Online (Sandbox Code Playgroud)
所以输出将如下所示.
id name weight
2 B 25
3 C 20
Run Code Online (Sandbox Code Playgroud)
Jan*_*ger 29
如果您想对多列求和,此解决方案也适用。假设数据帧
>>> 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
Run Code Online (Sandbox Code Playgroud)
您可以连接它们并按索引列分组。
>>> 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
Run Code Online (Sandbox Code Playgroud)
wai*_*kuo 10
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
Run Code Online (Sandbox Code Playgroud)
如果将公共列设置为索引,则可以将两个数据帧相加,这比合并要简单得多:
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
Run Code Online (Sandbox Code Playgroud)