【问题标题】:How can I save result from groupby in a new column?如何将 groupby 的结果保存在新列中?
【发布时间】:2022-08-11 23:09:28
【问题描述】:

我有一个数据框

key1 key2 key3 value1 value2
1 a s2 3 4
1 a s2 2 3
2 b j6 1 1

我想要结果

key1 key2 key3 value1 value2 sum_value1 sum_value2
1 a s2 3 4 5 7
1 a s2 2 3 5 7
2 b j6 1 1 1 1

sum_value1 是 value1 通过分组 key1、key2、key3 得到的值的总和。 sum_value2 也是如此。

我怎样才能得到这个?谢谢!

到目前为止我使用的是:

df[\"sum_value1\"] = df[\"value1\"].groupby([\"key1\",\"key2\",\"key3\"]).transform(\'sum\')

  • 忘记写集了,抱歉。我的分组集是 [\"key1\", \"key2, \"key3\"] 我想对 value1 和 value2 求和。
  • 你到目前为止尝试了什么?
  • @di1a 请发布您迄今为止尝试过的代码或语句。
  • 我用了 df[\"sum_value1\"] = df.groupby([\"key1\",\"key2\",\"key3\"]).transform(\'sum\'),但它没有\'不工作。
  • 我不明白...您如何将 sum_value1 设为 5,5,1...您要添加什么值才能得到总计 5

标签: python pandas dataframe group-by sum


【解决方案1】:

使用 groupby 和 transform 返回各个列的总和

df[['sum_value1','sum_value2']]=df.groupby(['key1','key2','key3'])[['value1','value2']].transform(sum)
df
    key1    key2     key3   value1  value2  sum_value1  sum_value2
0      1       a       s2      3       4       5          5
1      1       a       s2      2       1       5          5
2      2       b       j6      1       1       1          1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-03
    • 1970-01-01
    • 2019-04-01
    • 2020-07-04
    • 1970-01-01
    • 2019-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多