我有一个像下面这样的数据帧
Class| Student| V1| V2| V3| wb
A| Max| 10| 12| 14| 1
A| Ann| 9| 6| 7| 0.9
B| Tom| 6| 7| 10| 0.3
B| Dick| 3| 8| 7| 0.7
C| Dibs| 5| 2| 3| 0.8
C| Mock| 6| 4| 3| 0.6
D| Sunny| 3| 4| 5| 0.9
D| Lock| 8| 3| 6| 1
我想计算V1,V2,V3的加权平均值,按类分组 结果应该如下所示
^{pr2}$到目前为止,我可以为每列分离数据帧。但我觉得效率很低
这是一个变量的代码
import pandas as pd
import numpy as np
def wtdavg(frame, var, wb):
d = frame[var]
w = frame[wb]
return (d * w).sum() / w.sum()
df = pd.read_csv('Sample.csv')
Matrix = df.groupby(['Class']).apply(wtdavg,var='V2',wb='wb')
print(Matrix)
我是一个有1周熊猫经验的新手。提前谢谢。在
最大
更新(值列的动态列表,即
^{pr2}$var_cols
)更一般的解决方案:
1.它为没有
Student
,Class
的所有列创建加权平均值:也可以为加权平均值定义列:
^{pr2}$更一般的方法是按^{} 过滤所有以
V
开头的列:相关问题 更多 >
编程相关推荐