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

如何在Pandas中忽略时间部分将字符串日期转为日期字段?

问题解决:忽略时间部分解析CSV日期并筛选数据

你的date字段存在两种不标准格式(毫秒分隔符混用冒号/点、时区标识大小写不一),导致默认日期解析失败。既然只需要日期部分,完全可以绕过时间部分的解析问题,下面是两种简单可行的方案:

方法1:直接截取日期字符串前缀

所有日期均以YYYY-MM-DD开头,直接截取前10位字符串再转换为日期类型,完全规避时间格式问题:

import pandas as pd

# 注意CSV分隔符是|,需指定sep参数并跳过空格
df = pd.read_csv('test.csv', sep='|', skipinitialspace=True)

# 截取date字段前10位,转换为日期类型
df['formatted_date'] = pd.to_datetime(df['date'].str[:10])

# 筛选日期大于2024-08-05的数据
filtered_df = df[df['formatted_date'] > '2024-08-05']

方法2:强制解析完整日期后提取日期部分

如果担心日期字符串格式有变动,可让pandas尝试自动识别格式,再提取纯日期部分:

import pandas as pd

df = pd.read_csv('test.csv', sep='|', skipinitialspace=True)

# 自动推断日期格式,异常数据转为空值,再提取日期部分
df['formatted_date'] = pd.to_datetime(df['date'], infer_datetime_format=True, errors='coerce').dt.date

# 筛选时需将右侧也转为date类型匹配
filtered_df = df[df['formatted_date'] > pd.to_datetime('2024-08-05').date()]

原代码报错原因

你的date字段存在两处不符合标准ISO格式的问题:

  • 2024-08-05T21:00:26:074Z:毫秒部分使用了冒号(标准应为点)
  • 2024-08-05T21:34:30.502z:时区标识为小写z(标准应为大写Z)
    这两种格式无法被pandas默认的解析规则识别,因此抛出匹配错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 03:45:58