如何访问 python groupby 对象值
How to access python groupby objects values
我使用多列的 groupby() 函数对 pandas 数据框进行分组。
df_tr_mod = df_tr.groupby(['Col1','Col2']).aCol.agg(['count'])
现在我想访问这个计数值(我想将所有计数值乘以 10)
我该怎么做?
在两个字段'Col1', 'Col2'
上应用groupby
,使用agg
函数进行计数,这里新的'count'
字段同时添加,计数值乘以10。
df_tr_mod = df_tr.groupby(['Col1','Col2']).aCol.agg(['count'])*10
我认为你需要 GroupBy.size
, agg
如果通过多个函数聚合更好:
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
我使用多列的 groupby() 函数对 pandas 数据框进行分组。
df_tr_mod = df_tr.groupby(['Col1','Col2']).aCol.agg(['count'])
现在我想访问这个计数值(我想将所有计数值乘以 10) 我该怎么做?
在两个字段'Col1', 'Col2'
上应用groupby
,使用agg
函数进行计数,这里新的'count'
字段同时添加,计数值乘以10。
df_tr_mod = df_tr.groupby(['Col1','Col2']).aCol.agg(['count'])*10
我认为你需要 GroupBy.size
, agg
如果通过多个函数聚合更好:
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