Как заменить значения нескольких столбцов в датафрейме
Необходимо заменить значения NaN в нескольких столбцах датафрейма, в каждом столбце на свое. Перепробовала множество разных способов, ничего не получается.
Датафрейм stud:
famsize | Pstatus | paid |Fedu
NaN | A | no | 4.0
GT3 | NaN | NaN | 2.0
LE3 | T | yes | NaN
В famsize NaN надо заменить на GT3, Pstatus - на Т, paid - на no, Fedu - на 2.0
Пробовала следующее:
выдает TypeError: 'Series' objects are mutable, thus they cannot be hashed
Если пробовать применить функцию к одному столбцу:stud.famsize.apply(fix_columns)ничего не происходит
stud.famsize = stud.famsize.replace('NaN', 'GT3', inplace=True) display (stud.famsize)
- все значения заменяются на None. Если без inplace=True - ничего не происходит.
stud.famsize.map({'NaN':'GT3'}).fillna(stud.famsize)
- ничего не происходит
Как правильно написать код? Заранее спасибо.
Ответы (1 шт):
Общее правило для всех методов Pandas - если вы используете параметр inplace=True то изменяется сам объект и ничего не возвращается (вернее возвращается None). Если этот параметр не указать или явно задать inplace=False, то создается копия объекта, изменяется данная копия и возвращается в качестве результата.
Поэтому надо делать либо так:
df.method_name(..., inplace=True)
либо так:
res = df.method_name(...)
Воспользуйтесь методом DataFrame.fillna():
res = df.fillna({"famsize":"GT3", "Pstatus":"T", "paid":"no", "Fedu": 2.0})
результат:
In [50]: res
Out[50]:
famsize Pstatus paid Fedu
0 GT3 A no 4.0
1 GT3 T no 2.0
2 LE3 T yes 2.0
