pandas.groupby.agg(sum)中inf与非inf的顺序是否影响结果?
含inf的Series分组求和结果异常:位置影响输出(NaN/Inf)
我在对包含inf的pd.Series(或pd.DataFrame)分组求和时,发现原数据中inf的位置会导致结果出现nan或inf的差异。
示例复现
先创建一个带两级MultiIndex的Series:
import pandas as pd import numpy as np mid = pd.MultiIndex.from_tuples([('a',1), ('a',2), ('b',1), ('b',2), ('c',1), ('c',2)]) df = pd.Series(np.array([np.inf, 1, 1, np.inf, np.inf, np.inf]), index=mid)
输出的Series内容:
a 1 inf 2 1.0 b 1 1.0 2 inf c 1 inf 2 inf dtype: float64
按第一级索引分组求和后,结果不符合预期:
df.groupby(level=[0]).agg(sum)
输出结果:
a NaN b inf c NaN dtype: float64
疑问点
按NumPy的运算规则,np.inf + 1、1 + np.inf、np.inf + np.inf的结果都是inf,所以我预期所有分组的求和结果都应该是inf。即使改用np.nansum,得到的结果也完全一致。
我了解到pandas曾存在过与inf和分组求和相关的bug,但这些bug均已关闭修复,且未涉及inf的位置对结果的影响。
请问在pandas 1.4.4版本中,为什么inf的位置会影响分组求和的计算结果?为什么两个inf相加会得到nan?
内容的提问来源于stack exchange,提问作者gtd88
相关产品推荐
相关产品推荐

