python - 为什么 Pandas 在空 DataFrame 上执行 groupby 时会不一致地使用 MultiIndex?
问题描述
即使 DataFrame 有零行,我希望 agroupby
仍然返回一个带有反映 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 背后的理念是什么?
解决方案
尝试dropna = False
:
foo.groupby(['col1', 'col2'], dropna=False).agg({'col3':'sum'})
输出:
col3
col1 col2
NaN NaN 0
推荐阅读
- python - 我模型上的过滤器功能返回我
- c# - UnityWebRequest 未发送帖子数据和文件,并且 chunkedTransfer 已经为 false
- ruby-on-rails - 用于 Show 但不是 Index 的条件 Rails 序列化程序
- r - 如何在 R 中为 gnls 传入矢量化参数列表
- c# - 可以禁用组时的扩展授权
- javascript - 在 Discord JS 中延迟或减慢(TimeOut)命令
- javascript - 悬停离开动画
- angular - 我如何更改日期格式('yyyy-mm-dd')Angular
- c# - 如何将 Mono 应用程序分发到其他操作系统(没有安装 Mono)
- javascript - Reactjs:导入和加载外部 js 库缩小文件放在 src 中