使用pd.to_datetime转换period列至datetime格式时遇类型错误的解决方法
解决方法
这个报错说明你的period列中存在无法转换为datetime的异常元素(具体是内置函数/方法对象),或者pandas无法自动识别日期格式,按以下步骤排查解决:
1. 检查并清理列内异常元素
先确认列中是否混有非字符串的无效数据:
print(data_aggr_period_prodgroup['period'].apply(type).unique())
如果输出包含<class 'builtin_function_or_method'>,说明列里存在函数对象这类无效值,先筛选出有效数据:
# 仅保留字符串类型的行 valid_data = data_aggr_period_prodgroup[data_aggr_period_prodgroup['period'].apply(lambda x: isinstance(x, str))] data_aggr_period_prodgroup = valid_data
2. 指定日期格式完成转换
清理后,明确指定日期格式避免自动识别出错:
- 若日期格式为月/日/年(如11/01/2021代表2021年11月1日):
data_aggr_period_prodgroup['period'] = pd.to_datetime(data_aggr_period_prodgroup['period'], format='%m/%d/%Y')
- 若日期格式为日/月/年(如11/01/2021代表2021年1月11日):
data_aggr_period_prodgroup['period'] = pd.to_datetime(data_aggr_period_prodgroup['period'], format='%d/%m/%Y')
3. 临时跳过错误行(可选)
如果不想立即清理数据,可通过参数将无效转换设为缺失值,后续再处理:
data_aggr_period_prodgroup['period'] = pd.to_datetime(data_aggr_period_prodgroup['period'], format='%m/%d/%Y', errors='coerce')
内容的提问来源于stack exchange,提问作者user20602598
相关产品推荐
相关产品推荐

