从pandas.to_datetime的官方文档中我们可以得知,
unit:字符串,默认为“ns”
参数的单位(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]
对于后者,输出没有改变。每次都显示日期时间值而不是第二个开始的毫秒数。为什么会这样?我有遗漏什么吗?
.view()
替代方法1中的.astype()
。该方法也适用于(带时区的)DateTimeIndex
数组,除非在该时间跨度内开始或结束夏令时。在这种情况下,会出现TypeError: Cannot change data-type for object array.
将其转换为UTC可以解决此问题。 - AstroFloyd