检测DataFrame日期列并转换为datetime64类型(格式化为dd/mm/yyyy)
Pandas日期列处理:转换类型、统一格式并替换"0"为NaN
原始数据
import pandas as pd df = pd.DataFrame({ 'Date1': ['20200422', '20200422.0', '20200501', '0'], 'Date2': ['15/05/2023', '0', '20230520', '25/06/2023'], 'Other1': ['Text1', 'Text2', 'Text3', 'Text4'], 'Other2': [10, 20, 30, 0] })
解决方案代码
# 指定需要处理的日期列 target_cols = ['Date1', 'Date2'] for col in target_cols: # 替换所有"0"、"0.0"为缺失值标记 df[col] = df[col].replace({'0': pd.NA, '0.0': pd.NA}) # 自动识别多种日期格式,转换为datetime64类型,无法识别的转为NaT df[col] = pd.to_datetime(df[col], errors='coerce') # 统一格式为dd/mm/yyyy(若需保持datetime类型,可注释掉此行) df[col] = df[col].dt.strftime('%d/%m/%Y').replace('NaT', pd.NA)
关键说明
- 替换无效值:先把列中的"0"和"0.0"替换为
pd.NA,避免后续日期转换时将其误识别为有效日期。 - 日期类型转换:
pd.to_datetime支持自动识别多种输入格式(如YYYYMMDD、DD/MM/YYYY),errors='coerce'参数会把无法转换的内容转为NaT(datetime类型的缺失值)。 - 格式统一:如果需要将日期显示为
dd/mm/yyyy格式的字符串,使用dt.strftime格式化,同时把NaT转为pd.NA保证缺失值格式一致;如果不需要转成字符串,仅保留datetime64类型,可跳过最后一行代码。
内容的提问来源于stack exchange,提问作者NoviK
相关产品推荐
相关产品推荐

