【问题标题】:UNIX to datatime conversionUNIX 到日期时间的转换
【发布时间】: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


【解决方案1】:

您的输入有十位数字,所以这可能是以秒为单位的 unix 时间(自 1970/1/1 以来的秒数)。如果是,则需要设置unit="s"

pd.to_datetime(1545003901, unit="s")
#Timestamp('2018-12-16 23:45:01')

【讨论】:

  • 感谢您的帮助,让我再试一次
猜你喜欢
  • 2017-11-09
  • 1970-01-01
  • 2014-05-06
  • 2015-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-23
  • 2016-04-24
相关资源
最近更新 更多