Как изменить значения в нескольких столбцах одновременно, основываясь на значении каждой ячейки и используя числовой индекс? - PullRequest
0 голосов
/ 02 ноября 2019

В pandas df все ячейки в столбцах от индекса 4 до конца имеют нулевое значение или одну из двух возможных строк, давайте использовать «a» и «b». Я хочу заменить каждое значение числом: «a» на 1, «b» на 2 и null на 0. Я бы предпочел изменить несколько столбцов одновременно, а не использовать цикл.

Я пытался использовать apply с lambda, потому что он работал для более раннего проекта, но он не работает для этого, и когда я использую его только в одном столбце, он меняет все на 0. Я ''Мы также пытались присвоить значения другим фрагментом кода ниже.

df.iloc[:, 4:] = df.iloc[:, 4:].apply(lambda x:1 if x == 'a' else(2 if x == 'b' else 0))

df[df.iloc[:,4]=='a',4] = 1

Значение истинности Серии неоднозначно. Используйте a.empty, a.bool (), a.item (), a.any () или a.all (). ',', Встречающиеся в индексе [B]

Объекты 'Series' являются изменяемымипоэтому их нельзя хешировать

1 Ответ

0 голосов
/ 02 ноября 2019

Вы можете использовать методы замены и заполнения

df.iloc[:, 4:] = df.iloc[:, 4:].replace({'a':1,'b':2}).fillna(0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...