#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