Как вы применяете регулярные выражения в pandas dataframe для извлечения всех значений после первого двоеточия (не второго двоеточия)? - PullRequest
0 голосов
/ 07 мая 2019

У меня есть таблица, в которой столбец А имеет значения в формате «12: 30: 45».Я хочу создать столбец B, в котором я получаю только цифры после первого двоеточия столбца A.

Как использовать регулярное выражение в python для извлечения только цифр после первого двоеточия, чтобы в итоге мы получилиполучить ': 30: 45'?

Я видел регулярное выражение для извлечения чисел, строк, разделения значений между пробелами, но не смог найти тот, который извлекается после двоеточия.

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

Ответы [ 2 ]

1 голос
/ 07 мая 2019

Вы можете использовать Series.str.extract с regex, чтобы получить :, в том числе:

# Print reproducable example dataframe
df = pd.DataFrame({'A':['12:30:45', '10:44:09', '8888']})
print(df)

          A
0  12:30:45
1  10:44:09
2      8888

df['A'] = df['A'].str.extract('^[^:]*(:.*)$')

print(df)
        A
0  :30:45
1  :44:09
2     NaN

Если вы хотите сохранить числа, у которых нет :, поэтому вы не получите NaN, используйте отступление регулярного выражения |.*, которое вы можете прочитать как: or all:

df['A'] = df['A'].str.extract('(^[^:]*(:.*)$|.*)')
print(df)
          A
0  12:30:45
1  10:44:09
2      8888
1 голос
/ 07 мая 2019

Используйте .str.split, ограничивая количество разбиений n=1.

print(df)
                  time
0             12:30:45
1                12:30
2                12312
3  1:123:123123:123123

df.time.str.split(':', n=1).str[1]
#0                30:45
#1                   30
#2                  NaN
#3    123:123123:123123
#Name: time, dtype: object

Если вам действительно нужна начальная точка с запятой ':'+df.time.str.split(':', n=1).str[1]'.

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