【发布时间】:2021-11-24 21:46:03
【问题描述】:
我正在尝试将日期/时间列的数据类型从 int64 转换为 datetime,但它在 UNIX 中,因此默认情况下日期设置为 1970。
我尝试将单位更改为秒、毫秒、纳秒、微秒和天,但结果仍设置为 1970。
# Convert the timestamp column to datetime
weather['time_stamp'] = pd.to_datetime(weather['time_stamp'],origin='unix', unit='ms')
# After converting the timestamp column to datetime datatype.
# Create a datetime object from the year, month and day column as well as
# the hour and minute column.
weather['year'] = weather['time_stamp'].map(lambda x : x.year)
weather['month'] = weather['time_stamp'].map(lambda x : x.month)
weather['day'] = weather['time_stamp'].map(lambda x : x.day)
weather['hour'] = weather['time_stamp'].map(lambda x : x.hour)
weather['minute'] = weather['time_stamp'].map(lambda x : x.minute)
weather.take(np.random.permutation(len(weather))[:15]
我做错了什么?我以前用过这种方法,效果很好。
我什至在语法中添加了format='%Y/%m/%d %H:%M:%S',但仍然没有变化。
这是输入:
time_stamp
1545003901
这是输出:
time_stamp year month day hour minute
1970-01-18 20:42:22.520 1970 1 18 20 42
【问题讨论】:
-
有什么问题?
-
"所以默认日期设置为 1970。"这不是 unix 时间戳的工作方式。
-
日期还是设置为1970年1月1日,应该是2018年,不明白为什么
-
请提供一些示例输入数据和您尝试的输出。
-
哦,我的错,当我从网站上读到“对于 Unix,纪元是 1970 年 1 月 1 日 00:00:00”声明时,我就是这么理解的
标签: python pandas datetime unix-timestamp