Изменение определенных значений в столбце на основе ключевого слова

#python #pandas #numpy

#python #pandas #numpy

Вопрос:

У меня есть следующий столбец во фрейме данных:

 'Marital-status'

'Never-married'
'Married-civ-spouse'
'Separated'
'Married-army-spouse'
'Divorced'
'Widowed'
  

Я хочу просто объединить obs, которые разделены или разведены и состоят в браке, независимо от того, что будет после. (т. Е. Я хочу, чтобы ‘Married-civ-couple’ и ‘Married-army-couple’ были помечены как ‘Женатые’. Я хочу, чтобы «Разделенные» и «Разведенные» были помечены как «Разделенные») Другие столбцы, такие как Never-married и Widowed, я хочу оставить прежними.

Я попытался выяснить это, начиная с

 if 'Married-' in df.['Marital-status']:
  

но я не уверен, как легко заменить все значения на нужное мне значение.

Комментарии:

1. df.['Marital-status] это смешанный синтаксис. Либо обратитесь к столбцу как к атрибуту, либо используйте синтаксис словаря. Как есть, это не может работать

Ответ №1:

Вы можете разделить ячейки на '-' и взять первую часть. Сначала определите маску, чтобы не испортить другие строки, подобные 'Never-married' .

 m = df['Marital-status'].str.contains('Married')
df.loc[m, 'Marital-status'] = df.loc[m, 'Marital-status'].str.split('-').str[0]
df['Marital-status'] = df['Marital-status'].replace('Divorced', 'Separated')

  Marital-status
0  Never-married
1        Married
2      Separated
3        Married
4      Separated
5        Widowed