【问题标题】:AttributeError: 'Timestamp' object has no attribute 'timestampAttributeError:“时间戳”对象没有属性“时间戳”
【发布时间】:2017-01-18 23:40:01
【问题描述】:

在将 panda 对象转换为时间戳时,我遇到了这个奇怪的问题。

Train['date'] 值类似于01/05/2014,我正在尝试将其转换为 linuxtimestamp。

我的代码:

Train = pd.read_csv("data.tsv", sep='\t') # use TAB as column separator
Train['timestamp'] = pd.to_datetime(Train['date']).apply(lambda a: a.timestamp())

我得到这个错误:

Traceback (most recent call last):
  File "socratis.py", line 11, in <module>
    Train['timestamp'] = pd.to_datetime(Train['date']).apply(lambda a: a.timestamp())
  File "/home/ubuntu/.local/lib/python2.7/site-packages/pandas/core/series.py", line 2220, in apply
    mapped = lib.map_infer(values, f, convert=convert_dtype)
  File "pandas/src/inference.pyx", line 1088, in pandas.lib.map_infer (pandas/lib.c:62658)
  File "socratis.py", line 11, in <lambda>
    Train['timestamp'] = pd.to_datetime(Train['date']).apply(lambda a: a.timestamp())
AttributeError: 'Timestamp' object has no attribute 'timestamp'

【问题讨论】:

    标签: python time timestamp


    【解决方案1】:

    to_datetime 方法将返回一个TimeStamp 实例。我不确定您希望通过 lambda 函数完成什么,但您似乎正在尝试将某些对象转换为 TimeStamp

    尝试删除应用部分,使其看起来像这样:

    Train['timestamp'] = pd.to_datetime(Train['date'])

    【讨论】:

    • 如果我们这样做,它不会将日期转换为 linux 时间戳。我需要的
    • 试试这个。如果效果不佳,请更新答案:Train['timestamp'] = time.mktime(pd.to_datetime(Train['date']).timetuple())
    • 你用的是哪个python?我得到AttributeError: 'Series' object has no attribute 'timetuple'
    【解决方案2】:

    您正在寻找datetime.timestamp(),它是在 Python 3.3 中添加的。 Pandas 本身不参与。

    注意.timestamp() 会将原始时间戳本地化为计算机的 UTC 偏移量。相反,此答案中的建议与时区无关。

    由于 pandas uses nanoseconds internally (numpy datetime64[ns]),即使使用 Python 2,您也应该能够做到这一点:

    Train['timestamp'] = pd.to_datetime(Train['date']).value / 1e9
    

    或者使用类似这样的内容更明确(来自日期时间文档):

    import pandas as pd
    from datetime import datetime, timedelta
    
    def posix_time(dt):
        return (dt - datetime(1970, 1, 1)) / timedelta(seconds=1)
    
    Train['timestamp'] = pd.to_datetime(Train['date']).apply(posix_time)
    

    【讨论】:

      【解决方案3】:

      to_datetime seems to be deprecated. 改用to_pydatetime()...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-10-29
        • 2019-05-17
        • 2020-05-19
        • 1970-01-01
        • 1970-01-01
        • 2014-10-13
        相关资源
        最近更新 更多