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

如何编写Python函数在pandas DataFrame中按日期查询匹配数据行?

问题排查

你现有的代码存在3个核心错误:

  • 逻辑路径错误:df1['date'].eq(date).any()仅返回布尔值(表示是否存在匹配日期),不能将该布尔值作为条件去匹配orders列的数值
  • 筛选逻辑错误:你需要按date列筛选匹配行,而非按orders列筛选
  • 类型兼容问题:date列为datetime类型,传入的字符串日期需要做类型对齐,避免隐式转换导致匹配失败
修正后代码
import pandas as pd

# 建议将df作为参数传入函数,避免依赖全局变量
def weekoforders(target_date, df):
    # 转换传入日期为datetime类型,和df的date列对齐
    target_date = pd.to_datetime(target_date)
    # 直接筛选date列匹配的行
    matched = df[df['date'] == target_date]
    # 匹配到就返回,没匹配到返回'no'
    return matched if not matched.empty else 'no'

# 调用测试
print(weekoforders('2020-08-07', df1))

如果你的需求是仅返回对应orders列的数值而非整行,把返回行替换为:

return matched['orders'].iloc[0] if not matched.empty else 'no'
输出说明

调用weekoforders('2020-08-07', df1)返回结果如下:

date  orders
5350549 2020-08-07   5555

如果是仅返回orders值的版本,会直接返回5555

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 04:45:04