pandas.DataFrame.apply的result_type与raw参数联动不符合文档说明问题
pandas 1.2.4中DataFrame.apply返回值异常的原因
这个现象是pandas 1.2.4版本apply方法不同处理分支的逻辑优先级不一致导致的,和raw参数对应的内部处理逻辑有关,具体如下:
raw=False场景:此时传入自定义函数的是单列Series对象,result_type="reduce"的规则正常生效,plus_2返回的列表会被识别为单列的结果值,所有列的计算结果最终拼接为索引是A、B的Series,符合文档描述。raw=True场景:此时传入函数的是numpy.ndarray类型的列数据,1.2.4版本该分支的实现存在缺陷,result_type="reduce"的优先级低于返回值维度推断逻辑,plus_2返回的列表会被误识别为多列的行级结果,最终拼接为DataFrame,和预期不符。
验证方案:你可以将
plus_2的返回值修改为标量(比如返回sum(x)+2),此时无论raw取何值,result_type="reduce都会返回符合文档描述的Series对象。
该问题属于pandas 1.2.4的已知边缘缺陷,在1.3及以上版本中已经修复,升级pandas版本即可得到一致的返回结果。
内容的提问来源于stack exchange,提问作者G.T.
相关产品推荐
相关产品推荐

