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

如何将DataFrame行值作为字典键传入np.busday_count假期参数

问题原因

你触发报错的核心原因是holidays字典只能接受单个可哈希的字符串作为键取值,而你直接传入了整列df.Country这个Series序列,属于不可哈希的多值结构,自然无法完成取值。

无逐行循环的解决方案

使用pandas的groupby按国家列分组运算,每个国家的所有数据统一调用一次np.busday_count并传入对应国家的假期列表,全程为向量化运算,性能远高于逐行遍历:

import numpy as np
import pandas as pd

# 提前统一转换日期格式,避免重复计算开销
df['Date_Open'] = df['Date_Open'].astype('datetime64[D]')
today = np.datetime64('today')

# 按国家分组计算工作日数
df['Aging'] = df.groupby('Country', group_keys=False).apply(
    lambda group: np.busday_count(
        group['Date_Open'],
        today,
        holidays=holidays.get(group.name, [])
    )
)

代码说明

  • group.name为当前分组对应的国家代码,直接作为键从holidays字典取对应国家的假期列表
  • 用holidays.get(group.name, [])做兼容处理,如果某国家不在你的假期字典配置中,默认传入空列表(即无额外假期),避免抛出KeyError
  • 该方案仅需要按国家的数量调用np.busday_count,即使数据量达到百万级也能快速完成计算

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 05:27:02