Python 如何根据条件计算熊猫的行权重
我有一个像这样的数据框Python 如何根据条件计算熊猫的行权重,python,pandas,Python,Pandas,我有一个像这样的数据框 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
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
如何用一行代码实现这一点?您可以这样做
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
np.sum()
可能是比sum
更好的选择。或者干脆(df['B']*df['C'])。sum()
。