我想根據第三列中的條件將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']
我想此做的是通過相應的(同一行)的「c」的基於條件的值乘以兩個「一」和「b」的值。但是,上面的代碼只會導致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
其作品,但它好像有我就是缺少一個更好的(更Python)的方式。
這並不能保證這些實際上是一種觀點;他們碰巧因爲你有一個單一的dtype,但即使可能不是特別是如果列錯誤創建迭代 – Jeff
@Jeff謝謝!請牢記這一點,有用的信息! – Divakar