Я пытаюсь динамически создать новый столбец на основе значений другого столбца. Скажем, у меня есть следующие dataframeСоздание динамического столбца Pandas
A | B
11 | 1
22 | 0
33 | 1
44 | 1
55 | 0
Я хочу создать новый колонка. Если значение столбца B равно 1, вставьте 'Y', иначе вставьте 'N'. Полученный dataframe должно выглядеть так:
A | B | C
11 | 1 | Y
22 | 0 | N
33 | 1 | Y
44 | 1 | Y
55 | 0 | N
Я мог бы сделать это перебором значений столбцов,
for i in dataframe['B'].values:
if i==1:
add Y to Series
else:
add N to Series
dataframe['C'] = Series
Howe Я боюсь, что это сильно снизит производительность, особенно потому, что мой набор данных содержит 500 000 строк. Любая помощь будет принята с благодарностью. Спасибо.
очень интересно! благодаря! – Zihs
было бы возможно выполнить 2 сравнения, но на другом фрейме данных? 'df.loc [df2.B == 1 и df.A == df2.B, 'C'] = 'Y''? – Zihs
Да. Только вы должны использовать '&' вместо 'and', например:' df.loc [(df2.B == 1) & (df.A == df2.B), 'C'] = 'Y' '. Скобки необходимы, поскольку оператор '&' имеет более высокий приоритет, чем '=='. Кроме того, я считаю, что 'df' и' df2' должны иметь одинаковые индексы для удобной индексации для работы. –