Можем ли мы фильтровать данные на основе конкретных слов? - PullRequest
2 голосов
/ 24 июня 2019

Я делаю веб-приложение, которое читает данные из файла Excel. У моего набора данных есть столбцы, в которых есть данные о категориях и подкатегориях книг, таких как «Fiction.Romantic», «Fiction.Thriller», «Sports.Imaginative», «Sports.AutoBiographic» и т. Д.

Я хочу, чтобы панды отфильтровали данные и напечатали итоговые / комбинированные значения как «Спорт», «Художественная литература» и т. Д.

Есть ли способ удалить подкатегории ('.Imaginative', '.Thriller') и распечатать / отобразить по желанию?

Существует много категорий и подкатегорий, поэтому выполнение их вручную займет много времени.

Фактический результат:

Name     Category                    Amount
ABC   Sports.Autobiographic.         7485
BCD.  Sports.Imaginative.             20

Ожидаемый результат:

Name     Category      Amount
ABC      Sports         7485
BCD.     Sports          20

1 Ответ

2 голосов
/ 24 июня 2019

Используйте Series.str.split по первому . только по n=1 и выбирайте списки первых по индексации:

df['Category'] = df['Category'].str.split('.', n=1).str[0]
print (df)
   Name Category  Amount
0   ABC   Sports    7485
1  BCD.   Sports      20

Или используйте Series.str.extract:

df['Category'] = df['Category'].str.extract(r'([a-zA-Z]+)\.') 
print (df)
   Name Category  Amount
0   ABC   Sports    7485
1  BCD.   Sports      20
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...