Преобразовать столбец даты в более высокое разрешение в python - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть df, из которых один столбец равен time:

    time    
0   2014-01-01
1   2014-01-02
2   2014-01-03
3   2014-01-04
4   2014-01-05
     ...    ... 

Я хотел бы преобразовать даты в datetime с детализацией до секунд, например, из * От 1007 * до 2014-01-01 11:00:00. Каков наилучший способ сделать это?


Я пробовал следующие методы:

df['time'] = df['time'].astype('datetime64[ns]')

и это:

df['time'] = pd.to_datetime(df['time'])

тогда это:

df['time'] = [time.date() for time in df['time']]

Странно, ничего не происходит для всех этих методов.

1 Ответ

0 голосов
/ 28 февраля 2020

Вас немного сбивает с толку то, что вы видите. Pandas делает отметку на отметках времени, если мы 00:00:00 в данный день.

Так, когда вы делаете

 df['time'] = pd.to_datetime(df['time'])

, тогда выполняется преобразование из строки во время и это в формате '%Y-%m-%d %H:%M:%S', но данные после дней будут отображаться, только если они не 00:00:00. Битовый пример:

import pandas as pd

df = pd.DataFrame(['2014/04/28 00:00:00', '2014-04-29', '2014-04-30'], columns=['time'])
print(df)
print(type(df['time'][0]))

OUT:

                  time
0  2014/04/28 00:00:00
1           2014-04-29
2           2014-04-30
<class 'str'>

Преобразование с pd.to_datetime():

df['time'] = pd.to_datetime(df['time'])
print(df)
print(type(df['time'][0]))

OUT:

        time
0 2014-04-28
1 2014-04-29
2 2014-04-30
<class 'pandas._libs.tslibs.timestamps.Timestamp'>

print(df['time'][0])

Взять один элемент серии:

OUT:

2014-04-28 00:00:00


Теперь то же самое, если один наших временных меток не на 00:00:00:

df = pd.DataFrame(['2014/04/28 10:00:00', '2014-04-29', '2014-04-30'], columns=['time'])
print(df)
print(type(df['time'][0]))

OUT:

                  time
0  2014/04/28 10:00:00
1           2014-04-29
2           2014-04-30
<class 'str'>

Преобразование с pd.to_datetime():

df['time'] = pd.to_datetime(df['time'])
print(df)
print(type(df['time'][0]))

OUT:

                 time
0 2014-04-28 10:00:00
1 2014-04-29 00:00:00
2 2014-04-30 00:00:00
<class 'pandas._libs.tslibs.timestamps.Timestamp'>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...