Я только что попытался запустить следующие 2 строки на P C, он работает просто отлично, получая 2020-03-13 23:59:00
результат. TBH, я незнаком с pandas фреймами данных, но мое лучшее предположение будет изменено astype(int)
на astype(int64)
или что-то подобное, подозревая, что int может быть 32-битным.
Обратите внимание, это не безосновательное предположение. 1584143940000
равно 0x170D65639A0
, обрезано до 32 бит, оно 0xD65639A0
, приведено к 32-битному знаку и его -698992224
, pd.to_datetime(-698992224, unit='ms')
дает вам 1969-12-23
, которое вы получите.
import pandas as pd
print(pd.to_datetime(1584143940000, unit='ms'))
Редактировать: подозрение подтверждается запуском следующего:
import pandas as pd, numpy
df = pd.DataFrame([1584143940000], columns=['x'])
print(pd.to_datetime(df.x[0], unit='ms'))
print(pd.to_datetime(df.x[0].astype(int), unit='ms'))
print(pd.to_datetime(df.x[0].astype(numpy.int64), unit='ms'))
и получением этого вывода:
2020-03-13 23:59:00
1969-12-23 21:50:07.776000
2020-03-13 23:59:00