繁体   English   中英

如何根据条件计算熊猫中行的权重

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM