【发布时间】:2020-10-29 09:15:36
【问题描述】:
我正在尝试通过基于日期列中的值的函数转换数据框中的新列,但收到错误消息,指出“时间戳对象没有属性 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)
最后,我愿意接受任何有关如何使这段代码更好的建议,因为我仍在学习中。
【问题讨论】:
-
在您的第二个代码 sn-p 中,您需要先转换为日期时间(您在第一个代码中所做的)。
-
对此感到抱歉 - 在我的原始代码中,它已经是一个日期时间对象。我只是在我的第二个代码中忘记了这一点,但已经编辑了帖子以包含它。添加它仍然不能修复返回的 AttributeError 。还有其他想法吗?
-
您可以在函数内部删除 date.dt,但在外部使用 df['Date'].date
标签: python dataframe datetime timestamp