pandas groupby apply keyerror

使用df.groupby.apply时,若其中一个分组在自定义函数中运行时出错,同时自定义函数中使用了分组key的列,会报找不到列名错误,但没有给出自定义函数运行错误的提示,如df.groupby([‘station_id’,‘dev_id’,‘tag_date’])在应用apply时,某个分组在自定义函数内运行出错,有如下报错:
在这里插入图片描述这是由于np.errstate(all=“ignore”)的参数设成了ignore,在ide中不会有提示,继续运行后面的代码,apply函数会再试一次,.apply充当filter操作,此时会排除分组使用的key列,也就是再次尝试计算时,传递给自定义函数的dataframe不包含[‘station_id’,‘dev_id’,‘tag_date’]三列,导致自定义函数使用’station_id’的时候,找不到列名。

原因详述:
1.程序进入\lib\site-packages\pandas\core\groupby\groupby.py的class groupby中的apply函数,运行到
with np.errstate(all=“ignore”):
return func(g, *args, **kwargs)
在这里插入图片描述
2.然后进入\lib\site-packages\pandas\core\groupby\ops.py的@final apply函数,执行到res = f(group)时有错误提示:类型错误TypeError
在这里插入图片描述在这里插入图片描述3.返回\lib\site-packages\pandas\core\groupby\groupby.py的class groupby中的apply函数的
with option_context(“mode.chained_assignment”, None):
在这里插入图片描述
调用self._python_apply_general后,返回同样的TypeError,从而进入except TypeError,从注释可以知道,这里对groupby对象重算了,且传递给udf自定义函数的dataframe不包含key列。
4.重算时由于找不到columns,导致最终显示出来的报错
KeyError: ‘station_id’

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值