Python DataFrame: разделить данные по строкам на основе настраиваемого значения? - PullRequest
0 голосов
/ 06 мая 2020

У меня есть фрейм данных со столбцом a. Мне нужно получить данные после второго _.

                     a

       0    abc_def12_0520_123
       1    def_ghij123_0120_456


raw_data = {'a': ['abc_def12_0520_123', 'def_ghij123_0120_456']}
df = pd.DataFrame(raw_data, columns = ['a'])

Вывод:

                     a                   b

       0    abc_def12_0520_123         0520_123
       1    def_ghij123_0120_456       0120_456

Что я пробовал:

     df['b'] = df.number.str.replace('\D+', '')

Сначала я попытался удалить алфавиты , Но это становится сложным. Любые предложения

Ответы [ 2 ]

1 голос
/ 02 июля 2020

Вот как:

df['b'] = ['_'.join(s.split('_')[2:]) for s in df['a']]

print(df)

Вывод:

                      a         b
0    abc_def12_0520_123  0520_123
1  def_ghij123_0120_456  0120_456

Объяснение:

lst = ['_'.join(s.split('_')[2:]) for s in df['a']]

эквивалентно:

lst = []
for s in df['a']:
    a = s.split('_')[2:] # List all strings in list of substrings splitted '_' besides the first 2
    lst.append('_'.join(a))
1 голос
/ 06 мая 2020

Попробуйте:

df['b'] = df['a'].str.split('_',2).str[-1]

                      a         b
0    abc_def12_0520_123  0520_123
1  def_ghij123_0120_456  0120_456
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...