时间戳对象没有属性 dt

新手上路,请多包涵

我正在尝试通过基于日期列中的值的函数转换数据框中的新列,但收到一条错误消息,指示“时间戳对象没有属性 dt”。但是,如果我在函数外运行它,dt 属性就可以正常工作。

任何指导将不胜感激。

此代码运行没有问题:

 sample = {'Date': ['2015-07-02 11:47:00', '2015-08-02 11:30:00']}
dftest = pd.DataFrame.from_dict(sample)
dftest['Date'] = pd.to_datetime(dftest['Date'])
display(dftest.info())
dftest['year'] = dftest['Date'].dt.year
dftest['month'] = dftest['Date'].dt.month

此代码给我错误消息:

 sample = {'Date': ['2015-07-02 11:47:00', '2015-08-02 11:30:00']}
dftest = pd.DataFrame.from_dict(sample)
dftest['Date'] = pd.to_datetime(dftest['Date'])
def CALLYMD(dftest):
    if dftest['Date'].dt.month>9:
        return str(dftest['Date'].dt.year) + '1231'
    elif dftest['Date'].dt.month>6:
        return str(dftest['Date'].dt.year) + '0930'
    elif dftest['Date'].dt.month>3:
        return str(dftest['Date'].dt.year) + '0630'
    else:
        return str(dftest['Date'].dt.year) + '0331'


dftest['CALLYMD'] = dftest.apply(CALLYMD, axis=1)

最后,在我仍在学习的过程中,我乐于接受有关如何改进此代码的任何建议。

原文由 Shawn Schreier 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.8k
2 个回答

我猜你应该在第二种情况下删除 .dt 。当你应用它应用于每个元素时,当它是一组数据时需要 .dt,如果它只是一个元素你不需要 .dt 否则它会引发 {AttributeError: ‘Timestamp’ object has no attribute ‘dt’ }

参考: https ://stackoverflow.com/a/48967889/13720936

原文由 Jerry wu 发布,翻译遵循 CC BY-SA 4.0 许可协议

查看时间戳文档后,我发现删除 .dt 并只执行 .year 和 .month 工作。但是,我仍然对为什么它在第一个代码中有效但在第二个代码中不起作用感到困惑。

原文由 Shawn Schreier 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题