为什么我得到属性错误:"str"对象没有属性"strftime"?



我正在尝试将日期转换为字符串并收到以下错误。

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:2020pythonlibsite-packagespandascoreseries.py", line 3848, in apply
mapped = lib.map_infer(values, f, convert=convert_dtype)
File "pandas_libslib.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]

会有什么问题?

日期列名数据是str数据类型,而不是datetime数据类型

假设您一开始有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'))

最新更新