字符串转Python datetime报错:pandas代码出现AttributeError问题排查
问题分析与解决
代码问题根源
直接把pd.DataFrame对象传给pd.to_datetime是错误的——这个函数的设计目标是处理一维数据(比如列表、Series),而非二维的DataFrame。
当传入DataFrame时,pandas会将其解析为「列名-列数据」的映射结构(类似字典),这里你的DataFrame列名是整数0。内部处理逻辑会尝试对列名调用lower()方法(用于识别时间单位),但整数类型没有这个方法,于是触发AttributeError: 'int' object has no attribute 'lower'错误。
修复方案
有几种简单的修复方式:
- 将DataFrame转为Series:用
squeeze()把单列DataFrame压缩成一维Series
import pandas as pd pd.to_datetime(pd.DataFrame(['12/4/1982']).squeeze())
- 直接提取DataFrame的列:通过列索引获取一维数据
import pandas as pd pd.to_datetime(pd.DataFrame(['12/4/1982'])[0])
- 直接使用Series而非DataFrame:如果不需要二维结构,一开始就创建Series
import pandas as pd pd.to_datetime(pd.Series(['12/4/1982']))
内容的提问来源于stack exchange,提问作者Brian Smith
相关产品推荐
相关产品推荐

