Найдите и замените все строки, которые соответствуют, но без учета регистра в столбце Pandas DataFrame - PullRequest
3 голосов
/ 13 апреля 2020

У меня есть Pandas DataFrame, в котором есть категорический столбец:

df = pd.DataFrame({'Source': ['Coronavirus','Sars','sars','coronavirus',
                          'CoronaVirus','Sars']})
df["Source"] = df["Source"].astype('category')
print(df)
        Source
0  Coronavirus
1         Sars
2         sars
3  coronavirus
4  CoronaVirus
5         Sars

Обратите внимание на разницу в способе написания текста, например (CoronaVirus против Coronavirus против Coronavirus). Чего я хочу достичь sh, так это преобразовать весь текст того же , то есть коронавирус и sars , но независимо от того, как он написан (заглавная буква, et c.) и объедините их всех. Таким образом, желаемый результат будет:

        Source
0  Coronavirus
1         Sars
2         Sars
3  Coronavirus
4  Coronavirus
5         Sars

Неважно, как будет получен конечный результат (коронавирус или коронавирус).

Заранее спасибо.

1 Ответ

3 голосов
/ 13 апреля 2020

Используйте Series.str.capitalize, потому что эта функция по умолчанию стоит в нижнем регистре:

df["Source"] = df["Source"].str.capitalize()

Если необходимо использовать заглавные буквы для каждого слова отдельно (если в реальных значениях данных есть 2 или более слов), используйте Series.str.title, также по умолчанию строчные:

df["Source"] = df["Source"].str.title()
print (df)
        Source
0  Coronavirus
1         Sars
2         Sars
3  Coronavirus
4  Coronavirus
5         Sars
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...