给定以下数据框:
import pandas as pd
d=pd.DataFrame({'Age':[18,20,20,56,56],'Race':['A','A','A','B','B'],'Response':[3,2,5,6,2],'Weight':[0.5,0.5,0.5,1.2,1.2]})
d
Age Race Response Weight
0 18 A 3 0.5
1 20 A 2 0.5
2 20 A 5 0.5
3 56 B 6 1.2
4 56 B 2 1.2
我知道我可以应用分组来按年龄和种族进行计数,如下所示:
d.groupby(['Age','Race'])['Response'].count()
Age Race
18 A 1
20 A 2
56 B 2
Name: Response, dtype: int64
但我想使用“权重”列对案例进行加权,以便前 3 行将计为 0.5,而不是每行 1,最后两行将计为 1.2。因此,如果按年龄和种族分组,我应该有以下内容:
Age Race
18 A 0.5
20 A 1
56 B 2.4
Name: Response, dtype: int64
这类似于使用 SPSS 中的“权重案例”选项。
我知道在 R 中这是可能的,并且我在 Python 中看到了一个有前途的库(尽管当前的构建失败了)here https://github.com/InContextSolutions/PandaSurvey.
和 PySal (不确定它是否适用于这里)
...但我想知道是否可以在分组中以某种方式完成。