pandas:使用groupby对列值的数量求和

迈克尔·珀杜(Michael Perdue)

我有以下数据框:

url='https://raw.githubusercontent.com/108michael/ms_thesis/master/mpl.Bspons.merge.1'
df=pd.read_csv(url, index_col=0)
df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d')
df = df.set_index(['date'])

df.head(3)

    state   year    unemployment    log_diff_unemployment   id.thomas   party   type    bills   id.fec  years_exp   session     name                          disposition   catcode     naics
date                                                            
2006-05-01  AK  2006    6.6     -0.044452   1440    Republican  sen     s2686-109   S2AK00010   39  109     National Cable & Telecommunications Association     support     C4500   81
2006-05-01  AK  2006    6.6     -0.044452   1440    Republican  sen     s2686-109   S2AK00010   39  109     National Cable & Telecommunications Association     support     C4500   517
2007-03-27  AK  2007    6.3     -0.046520   1440    Republican  sen     s1000-110   S2AK00010   40  110     National Treasury Employees Union   support     L1100   NaN

我想对定义的每个组中的账单数进行求和catcode > disposition > id.fec我使用以下代码:

df['billsum'] = df.groupby([pd.Grouper(level='date', freq='A'), 'catcode', \
        'disposition', 'id.fec']).bills.transform('sum')

哪个返回

df.head(3)

    state   year    unemployment    log_diff_unemployment   id.thomas   party   type    bills   id.fec  years_exp   session     name                    disposition     catcode     naics   billsum
date                                                                
2006-05-01  AK  2006    6.6     -0.044452   1440    Republican  sen     s2686-109   S2AK00010   39  109     National Cable & Telecommunications Association     support     C4500   81  s2686-109s2686-109
2006-05-01  AK  2006    6.6     -0.044452   1440    Republican  sen     s2686-109   S2AK00010   39  109     National Cable & Telecommunications Association     support     C4500   517     s2686-109s2686-109
2007-03-27  AK  2007    6.3     -0.046520   1440    Republican  sen     s1000-110   S2AK00010   40  110     National Treasury Employees Union   support     L1100   NaN     s1000-110

该代码不返回每个组中包含的“数量”钞票,而是返回每个组中包含的所有钞票。我只想要每个组中的账单数量。有人对如何进行这项工作有想法吗?

耶斯列尔

我认为您需要的transform size不是sum

df['billsum'] = df.groupby([pd.Grouper(level='date', freq='A'), 'catcode', \
        'disposition', 'id.fec']).bills.transform('size')

print df.head(3)
           state    year  unemployment  log_diff_unemployment  id.thomas  \
date                                                                       
2006-05-01    AK  2006.0           6.6              -0.044452       1440   
2006-05-01    AK  2006.0           6.6              -0.044452       1440   
2007-03-27    AK  2007.0           6.3              -0.046520       1440   

                 party type      bills     id.fec  years_exp  session  \
date                                                                    
2006-05-01  Republican  sen  s2686-109  S2AK00010         39      109   
2006-05-01  Republican  sen  s2686-109  S2AK00010         39      109   
2007-03-27  Republican  sen  s1000-110  S2AK00010         40      110   

                                                       name disposition  \
date                                                                      
2006-05-01  National Cable & Telecommunications Association     support   
2006-05-01  National Cable & Telecommunications Association     support   
2007-03-27                National Treasury Employees Union     support   

           catcode naics  billsum  
date                               
2006-05-01   C4500    81        2  
2006-05-01   C4500   517        2  
2007-03-27   L1100   NaN        1  

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Pandas DataFrame上使用groupby添加任意数量的列并计算值

Pandas:使用 groupby 對 n 行的值求和

Pandas:groupby 对列的子集求和

如何使用groupby在pandas中以相反的顺序对列求和

在 groupby pandas 中对包含此列值的每个列值和其他列值求和

如何用pandas groupby对许多列求和?

基于pandas groupby的多列求和

在对Pandas DataFrame的列中的不匹配值求和时,如何强制groupby / sum?

使用Groupby的Python Pandas条件求和

使用groupby按条件求和熊猫列

Pandas Dataframes 对不同列的值计数求和

如何使用 PHP 在 json 数组值中求和“数量”

使用 vb.net 对随机数量的值求和

Pandas Groupby并使用自定义值创建新列

使用Pandas GroupBy从多个列中聚合唯一值

pandas groupby 使用一列列表值

将groupby与pandas一起使用后查找唯一列元素的数量

对 value_counts() 返回的 groupby 列值求和

对重复的列进行分组,并使用pandas对相应的列值求和

用pandas groupby求和并重命名旧列?

具有多列的 Pandas Dataframe Groupby 并将其求和

Pandas groupby agg:考虑项目数量,对每个订单 ID 的字符串价格求和

Python Dataframe如何使用groupby对行值求和

熊猫:在汇总某些值时使用groupby求和

使用agg求和并应用列表的Groupby MultiIndex Pandas系列

在 Pandas Python 中使用多索引数据透视表对列值求和

使用 GROUP BY 对行中列的值求和

使用 awk 编程对列的值求和

如何使用 awk 累计对列的值求和?