Я хотел бы умножить (на месте) значения в одном столбце 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']
Я хотел бы, чтобы это сделать, это умножить значения как «а» и «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) так, что я пропускаю.
Это не гарантирует, что это на самом деле вид; они случаются так, как у вас есть один тип dtype, но даже не может быть esp, если столбцы err созданы итеративно – Jeff
@Jeff Спасибо! Помните об этом, полезная информация! – Divakar