即使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的背后原理是什么?
答案 0 :(得分:0)
试试dropna = False
:
foo.groupby(['col1', 'col2'], dropna=False).agg({'col3':'sum'})
输出:
col3
col1 col2
NaN NaN 0