如何访问python groupby对象值

Posted

技术标签:

【中文标题】如何访问python groupby对象值【英文标题】:How to access python groupby objects values 【发布时间】:2017-12-02 14:37:17 【问题描述】:

我使用 groupby() 函数对 pandas 数据框进行多列分组。

df_tr_mod = df_tr.groupby(['Col1','Col2']).aCol.agg(['count'])

现在我想访问这个计数值(我想将所有计数值乘以 10) 我该怎么做?

【问题讨论】:

这不是 groupby 对象。您已经完成了一些聚合,因此它应该返回一个 DataFrame。您可以在该 DataFrame 上执行常规操作 (df_tr_mod * 10) 吗? 你能提供我的数据框吗 【参考方案1】:

在两个字段'Col1', 'Col2' 上应用groupbyagg 函数进行计数,这里同时添加新的'count' 字段计数值乘以10。

df_tr_mod = df_tr.groupby(['Col1','Col2']).aCol.agg(['count'])*10

【讨论】:

【参考方案2】:

我认为你需要GroupBy.sizeagg如果通过多个函数聚合更好:

What is the difference between size and count in pandas?

df_tr = pd.DataFrame('Col1':[1,2,1,2,2],
                      'Col2':[5,5,5,6,6],
                      'aCol':[1,8,9,6,4])
print(df_tr)
   Col1  Col2  aCol
0     1     5     1
1     2     5     8
2     1     5     9
3     2     6     6
4     2     6     4

#your solution, only multiple 10 
df_tr_mod = df_tr.groupby(['Col1','Col2']).aCol.agg(['count']) * 10
print (df_tr_mod)
           count
Col1 Col2       
1    5        20
2    5        10
     6        20

print (type(df_tr_mod))
<class 'pandas.core.frame.DataFrame'>

#for MultiIndex add to_frame
df_tr_mod = df_tr.groupby(['Col1','Col2']).size().to_frame(name='count') * 10
print (df_tr_mod)
           count
Col1 Col2       
1    5        20
2    5        10
     6        20

#for all columns from index add reset_index() 
df_tr_mod = df_tr.groupby(['Col1','Col2']).size().reset_index(name='count') 
df_tr_mod["count"]= df_tr_mod["count"]*10
print (df_tr_mod)
   Col1  Col2  count
0     1     5     20
1     2     5     10
2     2     6     20

更好地使用agg函数:

df_tr_mod = df_tr.groupby(['Col1','Col2']).aCol.agg(['size', 'sum', 'mean'])
print (df_tr_mod)
           size  sum  mean
Col1 Col2                 
1    5        2   10     5
2    5        1    8     8
     6        2   10     5

【讨论】:

以上是关于如何访问python groupby对象值的主要内容,如果未能解决你的问题,请参考以下文章

Python pandas:替换 groupby 对象中的选择值

Python数据聚合和分组运算-GroupBy Mechanics

使用 groupby [Python] 时如何将值相乘

如何通过传入变量而不是文字来使用多列的 groupBy

如何对不同长度的 Python Pandas groupby 对象进行切片?

如何计算 groupby 对象中包含的多个列表并将该组列表中的每个值的计数相加