Как преобразовать эпоху Unix в высокоточную метку времени [pandas]? - PullRequest
1 голос
/ 25 апреля 2019

У меня есть временной ряд с эпохой Unix, который я хочу преобразовать во время в формате "% Y-% m-% d% H:% M:% S.% f".

Когда я использую

   pd.to_datetime(data['Time'],format='%Y-%m-%d %H:%M:%S.%f')

Я получаю даты около 1970-01-01 00: 23: 03.270, что неверно (так как реальное время моих данных около 2013-11-01) и когда я пытаюсь

   pd.to_datetime(data['Time'],unit='ms')

У меня правильные даты, но у меня нет нано точности. С другой стороны, когда я объединяю единицу и формат, такой как

   pd.to_datetime(data['Time'],unit='ms',format='%Y-%m-%d %H:%M:%S.%f')

Я получаю ошибку кода, которая говорит, что «невозможно указать формат и единицу измерения».

Знаете ли вы, как решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 25 апреля 2019

Некоторые из ваших примеров данных в виде фрейма данных под названием df:

            Time
0   1.383260e+12
1   1.383260e+12
2   1.383260e+12
3   1.383260e+12
4   1.383260e+12
5   1.383260e+12
6   1.383260e+12
7   1.383260e+12
8   1.383260e+12
9   1.383260e+12
10  1.383340e+12
11  1.383340e+12
12  1.383340e+12
13  1.383340e+12
14  1.383340e+12
15  1.383340e+12
16  1.383340e+12
17  1.383340e+12
18  1.383340e+12
19  1.383340e+12

Преобразовать в объект datetime, затем установить желаемый формат:

pd.to_datetime(df.Time, unit='ms').dt.strftime('%Y-%m-%d %H:%M:%S.%f')

Это дает:

0     2013-10-31 22:53:20.000000
1     2013-10-31 22:53:20.000000
2     2013-10-31 22:53:20.000000
3     2013-10-31 22:53:20.000000
4     2013-10-31 22:53:20.000000
5     2013-10-31 22:53:20.000000
6     2013-10-31 22:53:20.000000
7     2013-10-31 22:53:20.000000
8     2013-10-31 22:53:20.000000
9     2013-10-31 22:53:20.000000
10    2013-11-01 21:06:40.000000
11    2013-11-01 21:06:40.000000
12    2013-11-01 21:06:40.000000
13    2013-11-01 21:06:40.000000
14    2013-11-01 21:06:40.000000
15    2013-11-01 21:06:40.000000
16    2013-11-01 21:06:40.000000
17    2013-11-01 21:06:40.000000
18    2013-11-01 21:06:40.000000
19    2013-11-01 21:06:40.000000
0 голосов
/ 25 апреля 2019

Пробовал в комбинации с astype?

pd.to_datetime(data['time'].astype(float)/1e9, unit='ms')

...