панды дата-время, чтобы Unix метка секунд - PullRequest
0 голосов
/ 22 января 2019

Из официальной документации pandas.to_datetime мы можем сказать,

unit : string, default ‘ns’

единица arg (D, s, ms, us, ns) обозначаютединица, которая является целым числом или числом с плавающей точкой.Это будет основано на происхождении. Например, с unit = 'ms' и origin = 'unix' (по умолчанию), это вычислит количество миллисекунд до начала эпохи Unix.

Так что, когда япопробуйте так,

import pandas as pd
df = pd.DataFrame({'time': [pd.to_datetime('2019-01-15 13:25:43')]})
df_unix_sec = pd.to_datetime(df['time'],unit='ms',origin='unix')
print(df)
print(df_unix_sec)

                 time
0   2019-01-15 13:25:43
0   2019-01-15 13:25:43
Name: time, dtype: datetime64[ns]

Выход не меняется для более позднего.Каждый раз, когда он показывает значение datetime, а не число миллисекунд до начала эпохи Unix для второго.Это почему?Я что-то пропустил?

1 Ответ

0 голосов
/ 22 января 2019

Я думаю, вы не поняли, для чего этот аргумент.Цель origin='unix' - преобразовать целую отметку времени в datetime, а не наоборот.

pd.to_datetime(1.547559e+09, unit='s', origin='unix') 
# Timestamp('2019-01-15 13:30:00')

И наоборот, вы можете получить отметку времени, преобразовав ее в целое число (вполучить наносекунды) и разделить на 10 9 .

pd.to_datetime(['2019-01-15 13:30:00']).astype(int) / 10**9
# Float64Index([1547559000.0], dtype='float64')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...