python - 如何根据条件计算熊猫行的权重
问题描述
我有一个看起来像这样的数据框
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
推荐阅读
- python - TensorFlow 在使用 Conv1D 层生成简单 GAN 时返回 ValueError
- ios - React Native Tap and Pay - NFC
- javascript - Javascript线性搜索重复数组
- servicestack - UserSecrets 不适用于 ModularStartup
- python - 使用 Beautifulsoup-Python 处理 Harvey Norman 的问题
- python - 并行数百万次迭代的 Numpy 函数
- javascript - 创建一个按钮,将输入字段的文本提交到我在 React 中的状态
- javascript - JavaScript:如何将嵌套的对象数组转换为键值对对象
- javascript - React JS 设置加载器 UI 的正确方法
- c++ - 使用可变参数函数将整数和/或整数数组转换为单个 int 数组