Python 如何获得按列分组后的平均值?
我有一个名为Python 如何获得按列分组后的平均值?,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个名为df的数据框,我想得到不同性别组的不同应用程序的平均使用时间 import pandas as pd df=pd.DataFrame({'user':[2,3,4,4,5,5],'gender':[0,0,1,1,1,1], 'app':['k','k','k','k','s','s'],'time':[6,10,10,6,3,1]}) 输入: app gender time user 0 k 0 6 2 1 k 0 10
df
的数据框,我想得到不同性别组的不同应用程序的平均使用时间
import pandas as pd
df=pd.DataFrame({'user':[2,3,4,4,5,5],'gender':[0,0,1,1,1,1],
'app':['k','k','k','k','s','s'],'time':[6,10,10,6,3,1]})
输入:
app gender time user
0 k 0 6 2
1 k 0 10 3
2 k 1 10 4
3 k 1 6 4
4 s 1 3 5
5 s 1 1 5
对于app k
,gender 0
组使用app k
的总时间为16(10+6)
,因此0_k
的平均使用时间为8.0
而gender 1
组使用app k
的总时间为16(10+6+0+0)
,因此1k
的平均使用时间为4.0
应为:
dict = {'0_k': 8.0, '0_s': 0, '1_k': 4.0, '1_s': 1.0}
要将其转换为字典,请执行以下操作:
dict = (df.groupby(["app", "gender"]).sum()/df.groupby(["gender"]).count()).time.to_dict()
{('k', 0): 8.0, ('s', 1): 2.0, ('k', 1): 8.0}
要将其转换为字典,请执行以下操作:
dict = (df.groupby(["app", "gender"]).sum()/df.groupby(["gender"]).count()).time.to_dict()
{('k', 0): 8.0, ('s', 1): 2.0, ('k', 1): 8.0}
我想你需要:
df['new_col'] = df.gender.astype(str)+'_'+df.app
df['Average'] = df.groupby(['gender','app'])['time'].transform('sum')/\
df.groupby(['gender'])['time'].transform('count')
print(df)
user gender app time new_col Average
0 2 0 k 6 0_k 8.0
1 3 0 k 10 0_k 8.0
2 4 1 k 10 1_k 4.0
3 4 1 k 6 1_k 4.0
4 5 1 s 3 1_s 1.0
5 5 1 s 1 1_s 1.0
d = dict(df[['new_col','Average']].values)
print(d)
{'0_k': 8.0, '1_k': 4.0, '1_s': 1.0}
我想你需要:
df['new_col'] = df.gender.astype(str)+'_'+df.app
df['Average'] = df.groupby(['gender','app'])['time'].transform('sum')/\
df.groupby(['gender'])['time'].transform('count')
print(df)
user gender app time new_col Average
0 2 0 k 6 0_k 8.0
1 3 0 k 10 0_k 8.0
2 4 1 k 10 1_k 4.0
3 4 1 k 6 1_k 4.0
4 5 1 s 3 1_s 1.0
5 5 1 s 1 1_s 1.0
d = dict(df[['new_col','Average']].values)
print(d)
{'0_k': 8.0, '1_k': 4.0, '1_s': 1.0}
对于gender 1
组使用appk
不是-16(10+6)/2=8
?我只想让gender
组使用不同的app
。如您所见,gender 1
组总共有四个人。@rosefun检查我的解决方案是否解决了问题。gender 1
组使用appk
不是-16(10+6)/2=8
?我只想让gender
组使用不同的app
。如您所见,gender 1
组总共有四个人。@rosefun检查我的解决方案是否解决了问题。