как проверить и сгруппировать все объекты, начинающиеся с фрейма данных в столбце - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть фрейм данных, где мне нужно проверить, сгруппировать и суммировать все данные

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

Предположим, у меня есть набор данных

Countries    31-12-17   1-1-18  2-1-18  3-1-18  Sum
India-Basic    1200      1100    800     900    4000
Sweden-Basic   1500      1300    700     1500   5000
Norway-Basic   800       400     900      900   3000
India-Exp      600       1400    300      200   2500
Sweden-Exp     1800      400     600     700    3500
Norway-Exp     1300      1600    1100    1500   4500

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

Countries    Sum
India        6500
Sweden       8500
Norway       7500

Индия

Ответы [ 2 ]

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

Используйте для решения регулярных выражений Series.str.extract и совокупность sum:

df1 = (df.groupby(df['Countries'].str.extract('(.*)-', expand=False), sort=False)['Sum']
         .sum()
         .reset_index())
print (df1)
  Countries   Sum
0     India  6500
1    Sweden  8500
2    Norway  7500

Альтернативный si split Countries на - и выбор первых списков на str[0]:

df1 = (df.groupby(df['Countries'].str.split('-').str[0], sort=False)['Sum']
        .sum()
        .reset_index())
print (df1)
  Countries   Sum
0     India  6500
1    Sweden  8500
2    Norway  7500
1 голос
/ 13 апреля 2020

это может сработать - обратите внимание, что я фильтровал только по релевантным столбцам:

(df.filter(['Countries','Sum'])
 .assign(Countries = lambda x: x.Countries.str.split('-').str.get(0))
 .groupby('Countries')
 .agg('sum')
)    


             Sum
Countries   
 India      6500
 Norway     7500
 Sweden     8500
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...