gpt4 book ai didi

python - 多个系列与另一个系列的条件乘法

转载 作者:行者123 更新时间:2023-11-28 19:54:04 24 4
gpt4 key购买 nike

我想根据第三列中的条件,将 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

关于python - 多个系列与另一个系列的条件乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40495160/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com