Python使用函数修改DataFrame日期列时出现时间数据错误如何解决
错误原因
- 传参错误:调用函数时第一个参数传入了字符串
'df',而非实际的DataFrame对象,函数内部拿到的是纯文本而非目标数据集 - 列访问逻辑错误:通过字符串拼接
x + '[' + y + ']'的方式尝试访问列,最终只会得到普通字符串"df[Start Date]",而非DataFrame对应的列数据,pandas尝试将该字符串按日期格式转换时直接匹配失败 - 无返回值缺陷:原函数既没有返回修改后的DataFrame,也没有直接修改原对象,即使逻辑修正也无法拿到转换后的结果
修复后的实现代码
def datesqltoexcel(df, dtcol): # 直接访问指定列完成转换 df[dtcol] = pd.to_datetime(df[dtcol], format='%Y-%m-%d') df[dtcol] = df[dtcol].dt.strftime('%d/%m/%Y') # 返回修改后的DataFrame return df # 调用时直接传入DataFrame对象,不要加引号包裹 df = datesqltoexcel(df, 'Start Date')
优化说明:直接使用Series自带的
dt.strftime方法替代apply lambda,属于矢量化操作,执行效率更高。
内容的提问来源于stack exchange,提问作者CGarden
相关产品推荐
相关产品推荐

