如何访问python groupby对象的值

时间:2017-06-29 03:27:39

标签: python pandas data-science pandas-groupby

我使用具有多列的groupby()函数对pandas数据帧进行分组。

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

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

2 个答案:

答案 0 :(得分:1)

groupby字段'Col1', 'Col2'上应用agg,其中'count'函数用于计数,此处新添加df_tr_mod = df_tr.groupby(['Col1','Col2']).aCol.agg(['count'])*10 字段,同时计数值乘以10。

adapter

答案 1 :(得分:1)

我认为您需要GroupBy.size,如果由多个函数聚合,agg会更好:

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