Python: группировка символов перед вторым тире - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть строка, такая как 'GH-TV-G090013'.По сути, я хочу сгруппировать фрейм данных по региону, который является второй парой букв («ТВ»).Прямо сейчас у меня есть код ниже.Но проблема в том, что некоторые регионы состоят из трех букв, а другие - из двух (а некоторые даже из одного).Так что было бы неплохо сгруппировать по буквам перед вторым тире (т.е. «GH-TV»).Есть ли способ сделать это?

Примеры прямо сейчас: «GH-TV-G090013» становится «GH-TV-», «GH-ABC-G090011» становится «GH-ABC», GH-V-G090000 становится GH-V-G

df.groupby(df.columns.str[:6], axis = 1).sum()

1 Ответ

0 голосов
/ 03 апреля 2019

Регулярные выражения - путь. Если до и после первой черты есть только от 1 до 3 символов, это всегда должно работать:

import re
col_list=['GH-TV-G090013',  'GH-ABC-G090011' ,'GH-V-G090000'] 
groups=[re.search('(\w{1,3}-\w{1,3})', i).group(0) for i in lista]
df.groupby(groups, axis = 1).sum()

Вы должны использовать df.columns вместо списка, который я использовал, конечно. Если вы не знакомы с регулярными выражениями, пожалуйста, скажите мне, и я могу помочь вам

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