1
我有一个数据框,我想通过两个变量进行分组,然后在这些变量内执行计算。有没有简单的方法来做到这一点,BACK把信息转换成数据帧时,我做了,即是这样的:使用groupby对Pandas DataFrame进行计算,然后将其传递回DataFrame?
df=pd.DataFrame({'A':[1,1,1,2,2,2,30,12,122,345],
'B':[1,1,1,2,3,3,3,2,3,4],
'C':[101,230,12,122,345,23,943,83,923,10]})
total = []
avg = []
AID = []
BID = []
for name, group in df.groupby(['A', 'B']):
total.append(group.C.sum())
avg.append(group.C.sum()/group.C.nunique())
AID.append(name[0])
BID.append(name[1])
x = pd.DataFrame({'total':total,'avg':avg,'AID':AID,'BID':BID})
但显然更有效?
我觉得这就是答案,但我有一个问题 - 让我们说,“平均”是真正的总和()以独特的分另一列中的元素 - 我将如何参考另一列。 np.sum/np.unique(组[ 'other_column'])?那有意义吗? – user1566200
我可能会分两步做。 'df1 = df.groupby(['A','B'])['C']。agg({'total':np.sum}); df1 ['avg'] = df1.total /df.groupby(['A','B'])['other']。agg({'num':pd.Series.nunique})。num; df1.reset_index()'这样的事情; – Psidom