按权重分组

2024-05-07

给定以下数据框:

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 (不确定它是否适用于这里)

...但我想知道是否可以在分组中以某种方式完成。


如果我理解正确的话,你只是在寻找.sum() https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.sum.html与重量。

d.groupby(['Age', 'Race']).Weight.sum()

## Age  Race
## 18   A       0.5
## 20   A       1.0
## 56   B       2.4
## Name: Weight, dtype: float64
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按权重分组 的相关文章

随机推荐