【问题标题】:How to convert unix timestamp in ms to readable timestamp in a pandas array?如何将 ms 中的 unix 时间戳转换为 pandas 数组中的可读时间戳?
【发布时间】:2020-10-25 23:24:24
【问题描述】:

我有一个 pandas 数组,其中有一列包含 unix 时间戳时间,但我认为它以毫秒为单位,因为每次最后都有 3 个额外的 0。例如,第一个数据点是 1546300800000,它应该只是 1546300800。我需要将此列转换为可读时间,所以现在我有:

df = pd.read_csv('data.csv')
df['Time] = pd.to_datetime(df['Time'])
df.to_csv('data.csv', index=False)

它没有给我正确的时间,而是给了我 1970 年的时间。例如,1546300800000 给了我 1970-01-01 00:25:46.301100,而它应该是 2019-01-01 00:00:00。它对列中的每个时间戳执行此操作,超过 20K 行

【问题讨论】:

  • 不要在时间戳中使用毫秒。错误的精确感(现在我们减少了 18 秒,或者“更好”的 18000 毫秒)。如果您需要毫秒精度,请不要使用时间戳
  • @GiacomoCatenazzi:为什么整数时间戳不能表示毫秒精度?
  • @MrFuppes:这只是错误的精确感。时间戳不是自纪元以来的第二个(并且从纪元开始的毫秒数要少得多)。以我的经验,它会产生隐藏的问题(或者应该实现谷歌“接近闰秒的慢时间)。更好地定义自己的起点和计数毫秒(因为它被科学地使用,通常基于 GPS 时间)。Unix 纪元适用于人类, GPS(或其他时间戳)实时。
  • @GiacomoCatenazzi:好的,这可能会让新手有点困惑^^顺便说一句。如果您在谈论闰涂和 GPS 时间,不应该是 accuracy 而不是精度吗?我的意思是,即使您的数据类型可以精确地表示某个时间(或 timedelta),它也可能不准确(例如系统错误)。
  • @MrFuppes:这取决于数据(例如证券交易所交易是可以的)。但是如果间隔包括闰秒,则时间增量可能是错误的,并且在闰秒期间,1000 个时间戳应该具有相同的值(因此一个纪元时间戳不会完全代表某个时间)。错误会出现在奇怪的地方:“不是唯一索引”(出于性能考虑,pandas 默认不检查),或者只是奇怪的统计结果(异常值)。

标签: python pandas datetime unix-timestamp


【解决方案1】:

数据;

df=pd.DataFrame({'UNIX':['1349720105','1546300800']})

转化

df['UNIX']=pd.to_datetime(df['UNIX'], unit='s')

【讨论】:

    猜你喜欢
    • 2020-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-30
    • 2021-05-13
    • 2013-04-07
    • 1970-01-01
    • 2011-01-29
    相关资源
    最近更新 更多