Pandas — Как сгруппировать по специальной частичной строке

#python #pandas

#python #pandas

Вопрос:

У меня есть .csv следующим образом:

 Population  Region
1001        Rigolet (N.L.)
2000        Nain (N.L.)
3000        Lot 63 (P.E.I.)
4000        Lot 53 (P.E.I.)
5000        Burnt Islands (N.L.)
6000        Burgeo (N.L.)
7000        Ham-Nord (Que.)
8000        Chesterville (Que.)
1000        Warwick (Que.)
9000        Prince (Ont.)
1002        Wawa (Ont.)
  

Я хотел бы сгруппировать по конечной части в круглых скобках строки в столбце Region, например ‘(N.L.)’ или ‘(Ont.)’.

Как я мог это сделать?

Большое спасибо!

Комментарии:

1. Можете ли вы отредактировать свой вопрос и указать ожидаемый результат?

Ответ №1:

Используйте Series.str.rsplit with n=1 , чтобы разделить на первый пробел справа. Затем сгруппируйте по этим значениям:

 grps = df['Region'].str.rsplit(n=1).str[-1]
df.groupby(grps).#dosomething
  

Когда мы записываем grps:

 print(grps)
0       (N.L.)
1       (N.L.)
2     (P.E.I.)
3     (P.E.I.)
4       (N.L.)
5       (N.L.)
6       (Que.)
7       (Que.)
8       (Que.)
9       (Ont.)
10      (Ont.)
Name: Region, dtype: object