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

pandas中基于lambda条件统计机器日活动量的报错修复

错误原因

你之前的代码报错核心问题是:groupby(['day','machine'])后你仅选择了['machine']列传入transform逻辑,此时lambda接收的参数x是仅包含machine字段的Series,自然无法索引到qty列,因此抛出KeyError。

修复后的实现代码

推荐使用可读性更高的分步写法:

# 按天、机器分组,统计每组内qty非空的有效记录总数
my_df['activities'] = my_df.groupby(['day', 'machine'])['qty'].transform(lambda x: x.notna().sum())
# 将qty为空的故障记录对应的活动量置为NaN
my_df.loc[my_df['qty'].isna(), 'activities'] = np.nan

如果希望把逻辑合并到单个transform中,也可以使用如下写法:

my_df['activities'] = my_df.groupby(['day', 'machine'])[['qty']].transform(
    lambda group: [group['qty'].notna().sum() if not pd.isna(val) else np.nan for val in group['qty']]
)

结果说明

上述代码运行后得到的activities列完全匹配预期输出:

  • 第1天机器A有效记录共4条,对应行的activities均为4
  • 第1天机器B有效记录共2条,对应行的activities均为2
  • 第2天机器B有效记录共2条,对应行的activities均为2
  • 第2天机器A的故障记录对应activities为NaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 19:51:01