очистка столбца строк в информационном фрейме pandas с пониманием str - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть фрейм данных (df1), созданный на основе опроса, в котором участники вводили свой пол в виде строки, поэтому существует столбец с полами, который выглядит следующим образом:

id       gender       age
1        Male         19
2        F            22
3        male         20
4        Woman        32
5        female       26
6         Male        22
7        make         24

и т. Д.

Например, я использовал

df1.replace('male', 'Male')

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

Я пытался использовать различныеСтроковое понимание и строковые операции в Pandas, такие как .split (), .replace () и .capitalize (), с np.where (), чтобы попытаться получить:

id       gender       age
1        Male         19
2        Female       22
3        Male         20
4        Female       32
5        Female       26
6        Male         22
7        Male         24

Я уверендолжен быть способ использовать регулярные выражения, чтобы сделать это, но я не могу понять код правильно.

Я знаю, что это, вероятно, многоэтапный процесс удаления "", затем ввода заглавных букв, а затем замены заглавных букв.

Любое руководство будет высоко ценится pythonistas!

Кев

1 Ответ

0 голосов
/ 25 февраля 2019

Адаптируйте код в моем комментарии, чтобы заменить каждую запись, которая начинается с f, на слово Female:

df1["gender"] = df1.gender.apply(lambda s: re.sub(
                                    "(^F)([A-Za-z]+)*",  # pattern
                                    "Female",            # replace
                                    s.strip().title())   # string
                                )

Аналогично для F с M в шаблоне и заменить на Male для Male.

Соответствующий Документы Regex
Справка Regex

...