You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Pandas to_datetime()格式化日期时出现AttributeError错误求助

解决Pandas to_datetime()报错:AttributeError: 'tuple' object has no attribute 'lower'

嘿,这个错误我之前踩过坑!大概率是你给to_datetime()传参的时候,不小心把某个本该是字符串/Series的参数弄成了元组(tuple),导致Pandas内部调用字符串方法时出错。咱们来具体分析:

错误根源

这个报错的核心是:Pandas在处理日期格式时,会尝试调用字符串的lower()方法(比如解析格式参数、处理错误选项时),但如果它拿到的是元组,自然就没有这个属性了。最常见的场景有两种:

1. 误将format参数设为元组

比如你本来想指定日期格式,结果不小心多打了个逗号,把字符串变成了元组:

import pandas as pd

df = pd.DataFrame({'date': ['2023-10-01', '2023-10-02']})
# 错误写法:format参数变成了元组(多了逗号)
pd.to_datetime(df['date'], format=('%Y-%m-%d',))

这里format=('%Y-%m-%d',)是一个单元素元组,而to_datetime()期望format是字符串类型,所以触发了错误。

2. 待转换的日期数据中混有元组

如果你的日期列里不小心混入了元组类型的元素,比如:

df = pd.DataFrame({'date': [('2023-10-01',), '2023-10-02']})
pd.to_datetime(df['date'])

Pandas尝试把元组转换成日期时,同样会因为调用字符串方法失败而报错。

解决方法

针对不同场景,修正方式如下:

  • 检查参数格式:确保format、errors这类接受字符串的参数是纯字符串,不要写成元组(删掉多余的逗号)。比如把上面的错误写法改成:
    pd.to_datetime(df['date'], format='%Y-%m-%d')
    
  • 清理日期数据:如果是数据里混了元组,先把元组转换成字符串。比如用apply处理:
    df['date'] = df['date'].apply(lambda x: x[0] if isinstance(x, tuple) else x)
    pd.to_datetime(df['date'])
    
  • 批量处理多列:如果要转换多列日期,别把列名元组直接传给format,而是用apply批量处理:
    df[['date1', 'date2']] = df[['date1', 'date2']].apply(pd.to_datetime)
    

只要把这些细节修正,to_datetime()就能正常工作啦!

内容的提问来源于stack exchange,提问作者M. Holm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:01:57