【问题标题】:Why does Pandas inconsistently use a MultiIndex when doing a groupby on an empty DataFrame?为什么 Pandas 在空 DataFrame 上执行 groupby 时会不一致地使用 MultiIndex?
【发布时间】:2019-03-06 18:21:25
【问题描述】:

即使 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 背后的理念是什么?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    试试dropna = False:

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

    输出:

               col3
    col1 col2      
    NaN  NaN      0
    

    【讨论】:

    • 我试过了,结果如下:groupby 不接受dropna 参数。将dropna 添加到agg 没有任何区别。
    • 你能升级你的熊猫版本吗? (dropna 1.1.0 版中的新功能。)
    猜你喜欢
    • 2021-05-18
    • 2023-03-25
    • 1970-01-01
    • 2019-06-16
    • 2018-06-27
    • 2021-04-04
    • 2018-04-21
    • 2020-09-29
    • 1970-01-01
    相关资源
    最近更新 更多