Очистка этих данных с помощью панд - PullRequest
0 голосов
/ 22 октября 2019

Итак, я пытаюсь развернуть столбец данных в файле Excel, который я импортирую как панду в Python, для более управляемых элементов.

This is a picture of some of the data I'm trying to clean

Как видите, существует множество разных способов сказать лимфому. Я пытаюсь свести эти предметы к базовому состоянию, поэтому для любой лимфомы, только для лимфомы. Для Рака просто рак, и так далее.

У вас есть какие-нибудь предложения?

1 Ответ

0 голосов
/ 22 октября 2019

Самый простой способ - заменить всю строку ключевым словом:

df['Conditions'].str.replace('.*(Lymphoma|Cancer).*', '\\1', case=False)

Но это решение довольно неточно. Это не работает, если есть определенные типы лимфомы, которые на самом деле следует рассматривать как рак, или состояния лимфомы, которые не содержат ключевое слово «лимфома».


Более точный подход заключается в явном перечислениивсе состояния, которые считаются лимфомой и раком и заменяют их соответственно:

replacements = {
    'Lymphoma': ['Lymphoma', 'Follicular Lymphoma', 'Lymphoma, B-Cell', 'B-Cell Lymphoma', 'XYZ'],
    'Cancer': ['Cancer A', 'Cancer B']
}

# explode requires pandas 0.25 or later
s = pd.Series(replacements).explode()
m = pd.Series(s.index, index=s.str.upper()).to_dict()

df['Conditions'].str.upper().map(m)

Вызовы upper предназначены для работы с регистром символов.

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