web-dev-qa-db-ja.com

2つのデータフレームをマージし、列の値を合計する方法

2つのデータフレームがあります

df1
Name class value
Sri   1     5
Ram   2     8
viv   3     4

df2
Name class value
Sri   1     5
viv   4     4

私の望ましい出力は、

df,

Name class value
Sri   2     10
Ram   2     8
viv   7     8

助けてください、事前に感謝します!

9
chandru

必要だと思います set_indexDataFrames、 add および最後の reset_index

df = df1.set_index('Name').add(df2.set_index('Name'), fill_value=0).reset_index()
print (df)
  Name  class  value
0  Ram    2.0    8.0
1  Sri    2.0   10.0
2  viv    7.0    8.0

Nameの値が一意でない場合は、groupbyを使用して集計sumを使用します。

df = df1.groupby('Name').sum().add(df2.groupby('Name').sum(), fill_value=0).reset_index()
8
jezrael

pd.concat + groupby + sum

個々のデータフレームを連結してから、キー列でグループ化できます。

df = pd.concat([df1, df2])\
       .groupby('Name')['class', 'value']\
       .sum().reset_index()

print(df)

  Name  class  value
0  Ram      2      8
1  Sri      2     10
2  viv      7      8
4
jpp