发生这种情况是因为_cython_agg_blocks
调用试图返回与原始值相同的dtype 结果(在本例中为)的结果的_try_coerce_and_cast_result
调用。_try_cast_result
__bool
当使用Z
dtype bool(并且所有组的True值不超过一个)时,这将返回一些特殊的信息。如果这些组中的任何一个具有2个或多个True值,则由于_try_cast_result
未将2.0转换回布尔值,因此结果值是浮点型 。
_try_cast_result
做更有用的东西时,Z
有D型int
:在内部,用Cython聚合通过使用 df.groupby(['X', 'Y']).sum()
一个回报result
的D型float
。然后,_try_cast_result
将结果返回到dtype int
。