Я должен обновить столбец фрейма данных, если условие выполнено. Но есть несколько условий и несколько значений для обновления. Поэтому я хочу сделать это в цикле.
Фрейм данных выглядит так:
mode car1 car2 bus1 bus2
car1 10 20 5 2
car2 11 22 3 1
bus1 4 4 2 2
bus2 3 4 3 5
Я понимаю, что структура данных немного странная, но давайте продолжим. Если mode говорит car1, я хочу, чтобы новое значение столбца имело значение в столбце car1. И так далее.
Мой код похож на:
targets = ['car1', 'car2', 'bus1', 'bus2']
for target in targets:
df.loc[(df.mode==f'target'),'value']=df.[target]
Это работает, но каждый из них заменяет строки, в которых условие не выполняется, NaN. Поэтому я получаю только столбец нового значения, содержащий значение для bus2 в строках bus2, но NaN во всех других строках.
В Stata я бы написал:
gen value = .
foreach x in car1 car2 bus1 bus2 {
replace value = `x' if mode=="`x'"
}
Ищем похожий код в Python!