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

基于日期条件从Pandas DataFrame提取指定列值的实现方法

解决方法:根据今日日期提取DataFrame中对应A列的值

Got it, let's break this down step by step. You need to match today's date in column D of your Pandas DataFrame and pull the corresponding value from column A—like returning 7 when today is 2020-06-19. Here's a robust way to do it, including fixes for common date format pitfalls:

完整可运行代码

import pandas as pd
import datetime as dt

# 初始化示例DataFrame
df = pd.DataFrame([[2,3,4], [4,5,6], [7,5,6]], columns=['A', 'B', 'C'])
# 添加D列日期(用dayfirst=True确保DD/MM/YYYY格式被正确解析)
df['D'] = pd.date_range(start='17/06/2020', periods=len(df), dayfirst=True)

# 获取今日日期(去掉时分秒部分,匹配D列的纯日期格式)
today = dt.datetime.today().date()

# 筛选D列等于今日日期的行,提取对应A列值
# 用iloc[0]取第一个匹配项(如果有多行同日期可按需调整)
matching_value = df.loc[df['D'].dt.date == today, 'A'].iloc[0]

print(matching_value)  # 当今日为2020-06-19时,输出7

关键细节与避坑提示

  • 日期格式统一:
    dt.datetime.today()会返回带时分秒的datetime对象,而D列是纯日期值。用df['D'].dt.date将D列转为纯date对象,避免因时间部分差异导致匹配失败。
  • 正确解析日期:
    原代码中的pd.date_range如果不加dayfirst=True,会把'17/06/2020'误判为MM/DD/YYYY格式(变成2020年1月6日),必须指定该参数才能正确识别DD/MM/YYYY格式的日期。
  • 无匹配时的容错处理:
    如果存在当日无对应行的情况,可添加判断避免报错:
    matching_rows = df.loc[df['D'].dt.date == today, 'A']
    if not matching_rows.empty:
        matching_value = matching_rows.iloc[0]
    else:
        matching_value = None  # 或返回0、"无匹配值"等默认内容
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 08:07:30