在空的DataFrame上进行分组时,为什么熊猫不一致地使用MultiIndex?

时间:2018-10-01 15:40:46

标签: python pandas

即使DataFrame的行数为零,我也希望groupby仍返回具有反映了groupby列的MultiIndex的结果。但是,在某些情况下,这不会发生。例如,在下面的代码中,索引没有名称,并且不是MultiIndex。

foo = pd.DataFrame({'col1':[None,None], 'col2':[None,None], 'col3':[None,None]})
display(foo.groupby(['col1', 'col2']).agg({'col3':'sum'}))

另一方面,如果我将任何列的类型更改为非对象类型,则将存在一个MultiIndex(具有正确的级别名称)。此外,当按单个列分组时,即使类型仍然都是Object,我也会获得具有正确名称的索引。

此行为是故意的吗?使用MultiIndex的背后原理是什么?

1 个答案:

答案 0 :(得分:0)

试试dropna = False

foo.groupby(['col1', 'col2'], dropna=False).agg({'col3':'sum'})

输出:

           col3
col1 col2      
NaN  NaN      0