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

如何在Python Pandas中将CSV中的字符串日期读取为日期类型?

解决Pandas读取CSV日期字段(31DEC2017格式)的问题

嘿,我明白你遇到的麻烦了——用dtype参数直接指定日期类型确实行不通,这是因为dtype是用来定义基础数据类型(比如字符串、整数)的,没办法直接解析自定义格式的日期字符串。咱们换两种靠谱的方法来搞定这个问题:

方法1:读取时直接解析日期

用parse_dates参数指定要解析的列,再配合date_parser自定义解析格式,这样Pandas就能正确识别31DEC2017这种格式了:

from datetime import datetime
import pandas as pd

# 自定义日期解析函数
def parse_period(date_str):
    # %d=两位日期,%b=三位字母月份缩写,%Y=四位年份
    return datetime.strptime(date_str, '%d%b%Y')

# 读取CSV时直接解析PERIOD列
df = pd.read_csv("test.csv", parse_dates=['PERIOD'], date_parser=parse_period)

方法2:先读为字符串,再转换为日期

如果觉得自定义函数麻烦,也可以先把PERIOD列读成字符串,之后用pd.to_datetime转换,这种方式更灵活,还能处理解析错误:

import pandas as pd

# 先读取CSV,PERIOD默认是字符串类型
df = pd.read_csv("test.csv")
# 转换为日期类型,指定格式
df['PERIOD'] = pd.to_datetime(df['PERIOD'], format='%d%b%Y')

# 可选:如果有无效日期,用errors参数处理(比如转成NaT)
# df['PERIOD'] = pd.to_datetime(df['PERIOD'], format='%d%b%Y', errors='coerce')

为什么之前的方法失效?

你之前尝试的dtype={'PERIOD': time}、dtype={'PERIOD': datetime}都不行,是因为dtype参数只接受像str、int、float这类基础数据类型的对象,而datetime/time是Python的日期类,Pandas无法通过dtype直接将字符串映射为这类日期对象,必须用专门的日期解析工具来处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:04:47