我想基于第三列中的条件,将(适当的)DataFrame的一列中的值乘以另一列中的值。例如:
data = pd.DataFrame({'a': [1, 33, 56, 79, 2], 'b': [9, 12, 14, 5, 5], 'c': np.arange(5)})
data.loc[data.a > 10, ['a', 'b']] *= data.loc[data.a > 10, 'c']
我想做的就是根据条件将“ a”和“ b”的值乘以“ c”中相应的(同一行)值。但是,以上代码仅会导致NaN值处于所需范围内。
我发现最接近的解决方法是执行此操作:
data.loc[data.a > 10, ['a', 'b']] = (data.loc[data.a > 10, ['a', 'b']].as_matrix().T * data.loc[data.a > 10, 'c']).T
可以,但是似乎缺少一种更好的(更Pythonic的)方式。
您可以使用mul(...,axis = 0)方法:
In [122]: mask = data.a > 10
In [125]: data.loc[mask, ['a','b']] = data.loc[mask, ['a','b']].mul(data.loc[mask, 'c'], 0)
In [126]: data
Out[126]:
a b c
0 1 9 0
1 33 12 1
2 112 28 2
3 237 15 3
4 2 5 4
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句