簡體   English   中英

Pandas DataFrame 合並求和列

[英]Pandas DataFrame merge summing column

我正在嘗試合並兩個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

如果您想對多列求和,此解決方案也適用。 假設數據幀

>>> 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
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

如果將公共列設置為索引,則可以將兩個數據幀相加,比合並簡單得多:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM