【问题标题】:Sum column based on another column in Pandas DataFrame基于 Pandas DataFrame 中另一列的总和列
【发布时间】:2019-10-15 01:38:39
【问题描述】:

我有一个这样的熊猫数据框:

>>> df = pd.DataFrame({'MONTREGL':[10,10,2222,35,200,56,5555],'SINID':['aaa','aaa','aaa','bbb','bbb','ccc','ccc'],'EXTRA':[400,400,400,500,500,333,333]})
>>> df
   MONTREGL SINID EXTRA
0        10   aaa   400
1        10   aaa   400
2      2222   aaa   400
3        35   bbb   500
4       200   bbb   500
5        56   ccc   333
6      5555   ccc   333

我想对每个分组的MONTREGL 列求和SINID...

所以我得到 2242 的 aaa 等等...我还想保留列 EXTRA 的值。

这是预期的结果:

   MONTREGL SINID EXTRA
0      2242   aaa   400
1       235   bbb   500
2      5611   ccc   333

提前感谢您的帮助!

【问题讨论】:

  • 您是否尝试过使用groupby
  • print(df.groupby(by=["SINID"])["MONTREGL"].sum()) ?
  • 你能做一个print(df.info()) 并分享结果打印
  • @yatu 之前提出的解决方案有效但在生产中无效dfd= df.groupby('SINID').MONTREGL.sum().reset_index().assign(EXTRA=df.EXTRA.unique()) 我收到错误Length of values does not match length of index

标签: python pandas dataframe


【解决方案1】:

我最终使用了这个脚本:

dff = df.groupby(["SINID","EXTRA"]).MONTREGL.sum().reset_index()

它在这个测试和生产中有效。

【讨论】:

    【解决方案2】:

    以下代码适用于您的示例:

    df1 = df.groupby(["SINID"]).sum()
    df1['EXTRA'] = df.groupby(["SINID"]).mean()['EXTRA']
    

    结果:

           MONTREGL  EXTRA
    SINID                 
    aaa        2242  400.0
    bbb         235  500.0
    ccc        5611  333.0
    

    【讨论】:

      【解决方案3】:

      我知道这篇文章很旧,但这可能对其他人有帮助:

      使用 loc: df.loc[df['SINID'] == aaa].MONTREGL.sum()

      使用 groupby: df.groupby('SINID')['MONTREGL'].sum()

      以下链接回答了类似的问题(查看 Alex Riley 的回复):

      How do I sum values in a column that match a given condition using pandas?

      祝你好运,

      【讨论】:

        【解决方案4】:

        我的建议是使用与其他列相关的条件过滤您的数据框,然后应用 sum 函数,

        事情是这样的。

        import pandas as pd

        df=pd.Dataframe({a:[1,2,3],b:[2001,2015,2019],c:[1,0,1]})

        aux=df[df.c>0]

        sa=aux.a.sum()

        sb=aux.b.sum()

        我的语法可能不正确(我没有运行代码)但它可能会起作用并引导您找到答案

        祝你好运。

        【讨论】:

          猜你喜欢
          • 2019-12-01
          • 2016-03-22
          • 1970-01-01
          • 2022-11-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-10-16
          相关资源
          最近更新 更多