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

如何解决Pandas读取CSV时的DateTime解析警告及日期匹配问题?

解决pandas日期解析警告与日期匹配问题

一、消除日期解析警告

你的警告源于CSV中DateTime列格式是DD-MM-YYYY,但设置dayfirst=False(默认值)会让pandas按MM-DD-YYYY解析日期,导致解析逻辑混乱。有两种可靠解决方式:

方式1:明确设置dayfirst=True

直接告诉pandas日期格式是日在前:

df = pd.read_csv(filename, parse_dates=['DateTime'], dayfirst=True)

方式2:指定精确日期格式(推荐)

避免任何歧义,直接指定解析格式(pandas 1.3.0及以上版本可直接用date_format参数):

# 方法A:自定义解析函数
from datetime import datetime
def parse_date(date_str):
    return datetime.strptime(date_str, '%d-%m-%Y')

df = pd.read_csv(filename, parse_dates=['DateTime'], date_parser=parse_date)

# 方法B:直接用date_format参数(pandas 1.3.0+)
df = pd.read_csv(filename, parse_dates=['DateTime'], date_format='%d-%m-%Y')

二、修复日期匹配报错

你之前将DateTime列转成字符串格式后匹配current_date,容易因格式不一致(比如前导零、日期分隔符差异)导致匹配失败。正确做法是保留DateTime的datetime类型,通过日期对象匹配:

修改后的完整代码示例

from datetime import datetime
import pandas as pd

# 1. 正确读取并解析日期
df = pd.read_csv(filename, parse_dates=['DateTime'], date_format='%d-%m-%Y')

# 2. 将current_date转为date对象(假设current_date是"DD-MM-YYYY"格式的字符串)
current_date_obj = datetime.strptime(current_date, '%d-%m-%Y').date()

# 3. 匹配日期并获取数据
# 筛选出日期匹配的行
matching_rows = df[df['DateTime'].dt.date == current_date_obj]
# 取第一行目标列数据(避免用iloc[index]的复杂写法,更直观)
eod_quote = matching_rows.iloc[0][f"{ticker}{quote_asset}"]

关键说明

  • 保留DateTime为datetime类型,避免字符串匹配的格式问题;
  • 用dt.date提取日期部分,和current_date转成的date对象直接对比,匹配逻辑更可靠;
  • 若current_date本身已是date对象,可跳过转格式步骤直接对比。

内容的提问来源于stack exchange,提问作者Matt - Block-Farms.io

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 08:05:14