如何将Pandas分组求和代码转为Polars?解决GroupBy下标访问报错
解决Polars分组聚合的TypeError问题
错误原因
你遇到的TypeError: 'GroupBy' object is not subscriptable,是因为Polars的GroupBy对象不支持Pandas那种通过下标['列名']选择聚合列的语法,二者分组聚合的写法逻辑存在差异。另外你用到的with_row_index()是用来添加行号列的,和Pandas里reset_index()重置索引的作用完全无关,这里不需要使用它。
正确的Polars代码写法
要实现按hotel_id和people_num分组对total_price求和,Polars有两种常用的正确写法:
写法1:使用agg方法推荐
polars_reserve_tb \ .group_by(["hotel_id", "people_num"]) \ .agg(pl.col("total_price").sum())
写法2:使用select方法
polars_reserve_tb \ .group_by(["hotel_id", "people_num"]) \ .select(pl.col("total_price").sum())
额外说明
- Polars的
group_by操作默认会保留所有分组列,且不会将分组列设为索引,因此不需要像Pandas那样额外调用reset_index(),聚合后的结果直接就是包含分组列和聚合结果的DataFrame。 - 注意你代码里的变量名拼写错误:
polars_researve_tb应该改为polars_reserve_tb少写了字母v。
内容的提问来源于stack exchange,提问作者assa
相关产品推荐
相关产品推荐

