我想根据criteria
列上的条件计算加权和。我有以下数据框架:
df = pd.DataFrame({'criteria': [2, 2, 2, 3, 4, 5, 5, 9],
'weight': [1, 2, 3, 1, 2, 1, 2, 3],
'value': [0.2, 0.6, 0.1, 0.9, 0.8, 0.7, 0.3, 0.8]})
print(df)
criteria weight value
0 2 1 0.2
1 2 2 0.6
2 2 3 0.1
3 3 1 0.9
4 4 2 0.8
5 5 1 0.7
6 5 2 0.3
7 9 3 0.8
weight
列的可能值为{1,2,3}。
我想计算加权和df['weight'] * df['value']
,当且仅当所有可能的weights
和相同的criteria
值都有一行,然后按criteria
值分组,剩下的就是NaN
。
在我的示例中,只有包含df['criteria'] == 2
的行满足此条件。
因此,我们会:
criteria weighted_sum
0 2 1.7
1 3 NaN
2 4 NaN
3 5 NaN
4 9 NaN
这个怎么写?非常感谢!
1条答案
按热度按时间kmbjn2e31#
您可以使用
issubset
检查权重是否是组的子集,然后使用series.where
求和: