Разделение / извлечение части столбца в кадре данных - python - PullRequest
0 голосов
/ 04 ноября 2018

Я пытаюсь разделить / извлечь часть столбца «Время», чтобы он показывал только часы и минуты, например. 18:15, а не 18:15:34.

Я видел много примеров в Интернете, которые используют функцию .str.split () с выделением двоеточия в качестве разделителя. Но это разделило бы столбец Time на три столбца: часы, минуты, секунды.

Входные данные:

df =

Index   Time
0       18:15:21
1       19:15:21
2       20:15:21
3       21:15:21
4       22:15:21

Выходной кадр данных

df =

Index   Time
0       18:15
1       19:15
2       20:15
3       21:15
4       22:15

Спасибо :)

Ответы [ 3 ]

0 голосов
/ 04 ноября 2018

Вы можете использовать регулярное выражение:

df.Time.str.replace(':\d\d$', '')

Или обратное разделение:

df.Time.str.rsplit(':', 1).str[0]
0 голосов
/ 04 ноября 2018

У вас есть справедливый выбор: replace, extract или split с pandas.series.str

Во-первых, это решение, основанное на конкретных случаях.

Ниже приведено решение, которое заменяет два последних числа вместе с : в столбце Time.

>>> df['Time'] = df['Time'].str.replace(':\d{2}$', '')
>>> df
    Time
0  18:15
1  19:15
2  20:15
3  21:15
4  22:15

Второй подход с str.extract с регулярным выражением ..

>>> df['Time'] = df['Time'].str.extract('(\d{2}:\d{2})')
>>> df
    Time
0  18:15
1  19:15
2  20:15
3  21:15
4  22:15
  • \d{2} to hold initial two numbers
  • : next to match this immediately after first match
  • \d{2} again next two number followed by colon
  • $ asserts position at the end of a line
0 голосов
/ 04 ноября 2018

Вы можете использовать:

df['Time'].apply(lambda x : ':'.join(x.split(':')[0:2]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...