繁体   English   中英

如果我想在特定列上按总和聚合,如何在 python 中应用“groupby”?

[英]How to apply 'groupby' in python if I want to aggregate by sum on a particular column?

我有一个看起来像这样的数据框: 数据框的图像

我不想在leid, cp_id, run_seq, prod, curr级别重复行,我想通过 sum tran_amnt进行聚合。 我做了这样的事情,但它抛出了一个错误。

data_gb = data.groupby('le_id', 'cp_id', 'run_seq', 'products', 'currency').sum()

但它抛出这个错误:

对象类型没有名为 cp_id 的轴

我认为这不起作用,因为数据框中存在字符串。

有没有其他更好的方法可以实现我想要的?

编辑:

这是生成上述数据帧的代码:

import pandas  as pd
data = {'le_id' : [101]*4 + [102]*4 + [103]*3 + [104]*5 + [101],
        'run_seq' : [31]*11 + [32]*6,
        'cp_id' : [201, 201, 201, 201, 203, 204, 205, 205, 206, 208, 
                  209, 202, 201, 204, 205, 208, 208],
        'cp_name' : ['A', 'A', 'A', 'A', 'B', 'C', 'E', 'E', 'F', 
                   'G', 'H', 'B', 'A', 'D', 'E', 'H', 'H'],

        'products' : ['U', 'U', 'U', 'W', 'X', 'U', 'U', 'V', 'W', 
                     'X','U', 'U', 'V', 'W', 'X', 'Z', 'U'],

        'tran_amnt' : [10203, 13789, 74378, 47833, 40237, 93732, 
                      63738, 42563, 92822, 11276, 63633, 99292, 27892, 
                      82727, 32442, 55622, 43535],


        'currency' : ['USD', 'YEN', 'USD', 'SGD', 'USD', 'INR', 'INR', 
                'SGD', 'USD', 'INR', 'SGD', 'SGD', 'SGD', 'SGD', 
                'INR', 'INR', 'INR']}

         data = pd.DataFrame(data)

试试这个:

data_gb = data.groupby(['le_id', 'cp_id', 'run_seq', 'products', 'currency']).sum()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM