Как дополнить концевыми нулями при форматировании даты и времени в pandas - PullRequest
1 голос
/ 10 января 2020

У меня есть pandas DataFrame, который выглядит следующим образом:

    pta         ptd         tpl_num
4   05:17       05:18       0
6   05:29:30    05:30       1
9   05:42       05:44:30    2
11  05:53       05:54       3
12  06:03       06:05:30    4

Я пытаюсь отформатировать pta и ptd до %H:%M:%S, используя это:

df['pta'] = pandas.to_datetime(df['pta'], format="%H:%M:%S")
df['ptd'] = pandas.to_datetime(df['ptd'], format="%H:%M:%S")

Это дает:

ValueError: time data '05:17' does not match format '%H:%M:%S' (match)

Имеет смысл, так как некоторые из моих временных меток не имеют :00 в столбце секунд. Есть ли способ дополнить их в конце? Или мне нужно будет дополнить свои входные данные вручную / перед добавлением их в DataFrame? Я видел много ответов, которые ставят начальные нули, но не смогли найти один для этого.

Ответы [ 2 ]

3 голосов
/ 10 января 2020

Некоторые даты не соответствуют указанному формату и, следовательно, неправильно анализируются. Пусть pandas проанализирует их для вас, а затем используйте dt.strftime, чтобы отформатировать их так, как вы хотите:

df['pta'] = pd.to_datetime(df['pta']).dt.strftime("%H:%M:%S")
df['ptd'] = pd.to_datetime(df['ptd']).dt.strftime("%H:%M:%S")

print(df)

       pta       ptd      tpl_num
4   05:17:00  05:18:00        0
6   05:29:30  05:30:00        1
9   05:42:00  05:44:30        2
11  05:53:00  05:54:00        3
12  06:03:00  06:05:30        4
1 голос
/ 10 января 2020

Если вам нужны только дополненные строки, вы можете сделать:

df['pta'].add(':00').str[:8]

Вывод:

4     05:17:00
6     05:29:30
9     05:42:00
11    05:53:00
12    06:03:00
Name: pta, dtype: object

Также, только на время, вы должны рассмотреть возможность использования pd.to_timedelta вместо pd.to_datetime.

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