[英]How to calculate weights of row in pandas based on condition
我有一个看起来像这样的数据框
pd.DataFrame({'A': ['C1', 'C2', 'C3', 'C4', 'C5'],
...: 'B': [6, 1, 7, 4, 3],
...: 'C': [True, True, False, False, True]})
Out[6]:
A B C
0 C1 6 True
1 C2 1 True
2 C3 7 False
3 C4 4 False
4 C5 3 True
对于列 C = True 的所有行,我想根据列 B 计算权重。结果数据框应如下所示:
A B C weight
0 C1 6 True 0.6
1 C2 1 True 0.1
2 C3 7 False 0.0
3 C4 4 False 0.0
4 C5 3 True 0.3
适用的逻辑:
B 列的总和,其中 C = True = 10 (6+1+3)
所以对于第 0 行(C1)“权重”= 6 / B 的总和,其中 C = True
我怎样才能用 1 行代码实现这一点?
你可以做
df['Weight'] = df['B']*df['C']/sum(df['B']*df['C'])
df
Out[136]:
A B C Weight
0 C1 6 True 0.6
1 C2 1 True 0.1
2 C3 7 False 0.0
3 C4 4 False 0.0
4 C5 3 True 0.3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.