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

如何让pandas.read_csv()将指定列解析为日期时间类型,其余列按字符串类型读取?

如何让pandas.read_csv()将指定列解析为日期时间类型,其余列按字符串类型读取?

嘿,这个需求我之前处理过好几次,刚好有两个实用的方法可以帮你搞定,既能保留像邮编这类带前导零的字符串数据,又能把指定列解析成日期时间类型:

  • 方法一:结合dtype和parse_dates快速实现
    这是最直接的方式,先用dtype=str指定所有列默认以字符串类型读取,再用parse_dates参数单独指定要解析为日期时间的列,pandas会自动优先处理这个列的类型转换:

    import pandas as pd
    
    df = pd.read_csv(
        '你的数据文件.csv',
        dtype=str,
        parse_dates=['send_date']
    )
    

    这样一来,除了send_date会被解析成datetime64类型外,其他所有列都会保持字符串格式,像带前导零的邮编、编号这类数据就不会被自动转成数字而丢失信息了。

  • 方法二:用converters参数做更灵活的控制
    如果你需要指定具体的日期格式(比如YYYY-MM-DD或者MM/DD/YYYY),或者对异常日期值做自定义处理,就可以用converters参数:

    import pandas as pd
    
    # 自定义日期转换函数,这里可以指定格式,还能处理异常值
    def convert_date(date_str):
        try:
            return pd.to_datetime(date_str, format='%Y-%m-%d')
        except ValueError:
            # 遇到不符合格式的日期可以返回NaT或者自定义值
            return pd.NaT
    
    df = pd.read_csv(
        '你的数据文件.csv',
        dtype=str,
        converters={'send_date': convert_date}
    )
    

    这里的format参数能让解析速度更快,也能避免pandas自动猜测格式出错;try-except块则可以处理那些格式不规范的日期值,避免程序报错中断。

另外提个小细节:如果你的数据里有缺失值,用dtype=str会把缺失值存为NaN(属于object类型),如果想要严格的字符串缺失标识,可以换成dtype='string'(pandas 1.0及以上版本支持),这时缺失值会变成pd.NA,更符合字符串类型的逻辑。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 13:23:09