You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pandas提取日期列前N个字符并清理CSV日期数据?

用Pandas批量清理带多余字符的日期列

问题分析

你之前的代码有两个关键问题:

  1. 列名不匹配:原DataFrame的日期列是date_of_birth,但你写的是date of birth和new date,导致程序找不到对应列
  2. 切片语法错误:Pandas中Series.str的切片应该用str[:10],而非str[0,10]

几种可行的解决方法

方法1:固定长度截取(适合日期格式统一为MM/DD/YYYY的情况)

你的日期都是MM/DD/YYYY格式,正好占10个字符,直接截取前10位即可:

import pandas as pd

df = pd.DataFrame({
    'name': ['alice','bob','charlie'],
    'date_of_birth': ['10/25/2005 R','10/29/2002','01/01/2001 BD']
})

# 截取前10个字符得到干净的日期字符串
df['cleaned_dob'] = df['date_of_birth'].str[:10]

方法2:正则表达式提取(更灵活,适配各种后缀)

如果日期后面的多余字符不固定,用正则提取符合MM/DD/YYYY格式的部分,兼容性更强:

# 提取匹配XX/XX/XXXX的日期片段
df['cleaned_dob'] = df['date_of_birth'].str.extract(r'(\d{2}/\d{2}/\d{4})')[0]

方法3:直接解析为datetime类型(推荐,便于后续日期操作)

把清理后的日期直接转成Pandas的datetime类型,既完成清理,又能方便后续做日期计算、筛选等操作:

# errors='coerce'会把无法解析的内容转为NaT,方便后续排查异常数据
df['cleaned_dob'] = pd.to_datetime(df['date_of_birth'], errors='coerce')

# 如果需要转回字符串格式,可使用strftime
df['cleaned_dob_str'] = df['cleaned_dob'].dt.strftime('%m/%d/%Y')

内容的提问来源于stack exchange,提问作者Emilio Prill

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 10:20:25