我有一个 Dataframe bmi
,可以这样总结:
现在,我想基于十年内测量的Age
值总结 Dataframe ,因此我执行以下操作:
bmi.groupby(by=bmi.Age//10).describe().stack()
它显示了以下摘要:
请注意,这将创建一个名为Age
的索引,我更愿意将其命名为Decade
。在生成 Dataframe 期间,如何重命名此索引的名称(准确地说,索引级别)?
所以我在寻找一个函数which_func()
,这样我的代码就可以读起来像这样:
bmi.groupby(by=bmi.Age//10).describe().which_func({'Age':'Decade'}).stack()
我得到了输出结果
我能想到的最短的单行版本是:
bmi.groupby(by=bmi.Age//10).describe().reset_index(level='Age', names='Decades').set_index('Decades').stack()
这似乎是多余的。
内置方法DataFrame.rename()
重命名索引的标签,而不是它的名称,其他方法需要提取索引或它们的名称,然后重命名,覆盖它们,这样代码就不能被链接。
考虑到这是groupby()
-aggregate()
设置中非常常见的情况,真的没有办法用链式代码来实现这一点吗?
1条答案
按热度按时间js5cn81o1#
您要查找的是
rename_axis()
:对于上述实际结果,我们使用了以下可重现示例:
以下形式都是等效的:
(the最后一个示例显示
rename_axis()
可以在.stack()
之后调用,这意味着它也可以在MultiIndex
上使用)。当然,您也可以在
groupby
之前派生一个新变量Decade
: