У меня есть эти значения в моем Pandas Dataframe, сам Dataframe имеет около 400000 строк с одним столбцом под названием «Значение».

S2_2018_targeted.value.unique()

array(['Yes', 'No', 'N', 'Y', 'YES', 'NO', 'y', ' No ', ' Yes ', '   ',
       nan], dtype=object)

Я запускаю этот код для изменения значений, но он вылетает из-за ядра в записной книжке Jupyter.

S2_2018_targeted.replace(to_replace =["No", "N", "No "],  
                            value ="NO")

Любые другие способы, которыми я мог изменить свои ценности?

0
Simon GIS 6 Авг 2019 в 06:48

2 ответа

Лучший ответ

Используйте словарь и сосредоточьтесь только на конкретном столбце

df.value.replace({'No ': 'NO', 
                  'NO': 'NO',
                  'n': 'NO'})

Для многих значений вы можете создать словарь динамически. Предположим, у вас есть

to_replace = ["No", "N", "No "]

Тогда

d = {val: 'NO' for val in to_replace}
df['value'] = df.value.replace(d)
1
rafaelc 6 Авг 2019 в 03:58

Если буквы всегда начинаются с заглавной буквы N, возможно, вы можете использовать регулярное выражение, как показано ниже

df['value'].replace(to_replace=r'\bN(\w+)', value='NO', regex=True, inplace= True)

С заглавными и строчными буквами. Например, для «y», «да», «Y» и «да» это будет работать df['value'].replace(to_replace=r'\b(Y|y)(\w+)?', value='YES', regex=True, inplace= True)

1
moys 7 Авг 2019 в 08:04