Python DataFrame处理Date-Time列时如何跳过字符串值执行格式转换
实现方案
这个需求完全可以实现,只需要在原本的apply逻辑中新增类型判断,跳过字符串类型的单元格即可。原代码直接调用strftime方法会在字符串类型单元格上报错,修改后的代码如下:
import datetime import pandas as pd # 方案1:跳过所有字符串类型,其余类型执行格式化 df['Date-Time'] = df['Date-Time'].apply(lambda x: x.strftime('%d/%m/%Y %H:%M:%S') if not isinstance(x, str) else x)
如果要更严谨,避免其他非日期非字符串类型的数据报错,可仅对明确的日期时间类型执行转换:
# 方案2:仅对datetime/Timestamp类型执行格式化,其余类型保持原值 df['Date-Time'] = df['Date-Time'].apply(lambda x: x.strftime('%d/%m/%Y %H:%M:%S') if isinstance(x, (datetime.datetime, pd.Timestamp)) else x)
补充说明
- 如果后续需要统一整列的格式,可以配合
pd.to_datetime(df['Date-Time'], errors='coerce')先把可转换的字符串批量转成日期类型,再统一格式化,异常值会自动置为空。 - 上述代码兼容pandas自带的Timestamp日期类型,无需额外调整逻辑。
内容的提问来源于stack exchange,提问作者kitchen800
相关产品推荐
相关产品推荐

