为啥我得到 AttributeError:'str' 对象没有属性 'strftime'?

Posted

技术标签:

【中文标题】为啥我得到 AttributeError:\'str\' 对象没有属性 \'strftime\'?【英文标题】:why I am getting AttributeError: 'str' object has no attribute 'strftime'?为什么我得到 AttributeError:'str' 对象没有属性 'strftime'? 【发布时间】:2020-10-18 20:38:29 【问题描述】:

我正在尝试将日期转换为字符串并出现以下错误..

    Traceback (most recent call last):
  File "C:/BAB/POC/Slam.py", line 113, in <module>
    sheet0[col] = format_datecol(sheet0, col)
  File "C:/BAB/POC/Slam.py", line 85, in format_datecol
    newSheet[datecolumnname] = newSheet[datecolumnname].apply(lambda x: x.strftime('%d%b%Y'))
  File "C:\2020\python\lib\site-packages\pandas\core\series.py", line 3848, in apply
    mapped = lib.map_infer(values, f, convert=convert_dtype)
  File "pandas\_libs\lib.pyx", line 2327, in pandas._libs.lib.map_infer
  File "C:/BAB/POC/Slam.py", line 85, in <lambda>
    newSheet[datecolumnname] = newSheet[datecolumnname].apply(lambda x: x.strftime('%d%b%Y'))
AttributeError: 'str' object has no attribute 'strftime

'

代码如下...

for col in keycols0:
    if '_DT'.casefold() or 'DATE'.casefold() in col:
        sheet0[col] = format_datecol(sheet0, col)



def format_datecol(newSheet,datecolumnname):
    newSheet[datecolumnname] = newSheet[datecolumnname].apply(lambda x: x.strftime('%d%b%Y'))
    # newSheet[datecolumnname] = newSheet[datecolumnname].apply(lambda x: datetime.strptime(x,'%d%b%Y'))
    return newSheet[datecolumnname]

当我在 if 条件中添加多个值并出现错误或超出错误时,就会出现问题..fir 以下代码我没有收到错误

for col in keyColumnNames:
        if '_DT'.casefold() in col:
            tempSheet[col] = format_datecol(tempSheet, col)

def format_datecol(newSheet,datecolumnname):
    newSheet[datecolumnname] = newSheet[datecolumnname].apply(lambda x: x.strftime('%d%m%Y'))
    return newSheet[datecolumnname]

会有什么问题?

【问题讨论】:

您是否尝试打印newSheet[datecolumnname]?然后就可以看到类型了。 第二个带注释的选项 (newSheet[datecolumnname].apply(lambda x: datetime.strptime(x,'%d%b%Y'))) 不适合您? @MrNobody33 ,不,它没有 请将此减少并增强为预期的MRE。显示中间结果与预期结果的偏差。特别是,我们希望您研究错误消息,跟踪问题值,并就您在完成该工作后 了解的内容提出问题。请参阅debugging help 这个可爱的参考。 【参考方案1】:

datecolumnname 数据属于 str 数据类型,而不是 datetime 数据类型

【讨论】:

【参考方案2】:

假设开头有from datetime import datetime,而x的格式为'2020-06-28',试试:

newSheet[datecolumnname] = newSheet[datecolumnname].apply(lambda x: datetime(*[int(d) for d in x.split('-')]).strftime('%d%b%Y'))

【讨论】:

感谢您的回复.. 出现以下错误.. lambda x: datetime(*[int(d) for d in x.split('-')]).strftime('%d% b%Y')) ValueError: int() 基数为 10 的无效文字:'DP1401|18|VF|RM|HKD|025|B|NP|CB00000009' 我的帖子假定x 的格式为'2020-06-28',因为您没有在问题中指定。 以下代码工作正常.. for col in keycols0: if '_DT'.casefold() in col: sheet0[col] = format_datecol(sheet0, col) def format_datecol(newSheet,datecolumnname): newSheet[datecolumnname] = newSheet[datecolumnname].apply(lambda x: x.strftime('%d%b%Y')) return newSheet[datecolumnname] if I check for multiple values with or in if condition is failed..in这种情况下我使用'DATE',当我包含日期时抛出错误

以上是关于为啥我得到 AttributeError:'str' 对象没有属性 'strftime'?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我得到 AttributeError: Object has no attribute? [关闭]

为啥我得到 AttributeError: Object has no attribute? [关闭]

为啥我得到 AttributeError:'LinearRegressionGD' 对象没有属性 'n_iter'

是否有人在加载 Keras 保存的模型时得到“AttributeError: 'str' object has no attribute 'decode'”

继承人一些异步代码为亚马逊搜索提供硒队列,为啥我得到 AttributeError? __init__ 没有运行?

AttributeError:“str”对象在 pytorch 中没有属性“dim”