#python #pandas #apply
#python #pandas #применить
Вопрос:
У меня есть фрейм данных с диагнозом пациента в столбце, и с помощью pandas я хочу разделить диагноз ==> ISM, не ISM. Я пробовал это
df["initial_diagnosis"] = df["initial_diagnosis"].apply(lambda x: x if x=="ISM" else "non ISM")
Но он присваивает «non ISM» также отсутствующим значениям. Есть ли способ сделать то же самое и сохранить отсутствующие значения такими, какие они есть?
Столбец, который я пытаюсь закодировать, выглядит следующим образом:
initial_diagnosis I
ISM
ISM
WDSM
NaN
ISM
SSM
CM
ASM
ISM
Комментарии:
1. Было бы действительно полезно, если бы вы могли поделиться фрагментом своих данных (т. Е.
df['initia_diagnosis
]) .2. Почему бы просто не изменить функцию apply, чтобы игнорировать элементы, которые имеют значение null?
Ответ №1:
Я думаю, что это должно сработать. Вероятно, отсутствующие значения являются пустыми строками или просто отсутствуют, я могу только догадываться
missing_values = {...} # Set of values you want to keep
df["initial_diagnosis"] = df["initial_diagnosis"].apply(lambda x: x if x=="ISM" or x in missing_values else "non ISM")
Редактировать:
import pandas as pd
from numpy import nan
data = pd.read_csv("test.csv")
print(data['initial_diagnosis'])
#0 ISM
#1 ISM
#2 WDSM
#3 NaN
#4 ISM
#5 SSM
#6 CM
#7 ASM
#8 ISM
#Name: initial_diagnosis, dtype: object
missing_values = {nan}
data["initial_diagnosis"] = data["initial_diagnosis"].apply(lambda x: x if x =="ISM" or x in missing_values else "non ISM")
print(data['initial_diagnosis'])
#0 non ISM
#1 ISM
#2 non ISM
#3 NaN
#4 ISM
#5 non ISM
#6 non ISM
#7 non ISM
#8 ISM