在Python Polars中如何聚合时拼接列表而非生成嵌套列表?
在Python Polars中聚合时拼接列表而非生成嵌套列表
直接用df.group_by('id').agg("name")会把每行的列表当成独立元素收集,生成嵌套列表,但我们可以通过以下方法把分组内的列表元素合并成一个扁平列表。
拿你给出的示例数据来说:
import polars as pl df = pl.DataFrame({ 'id': [1, 1], 'name': [["Bob"], ["Mary", "Sue"]], })
直接聚合得到的是嵌套列表:
| id | name |
|---|---|
| 1 | [["Bob"], ["Mary", "Sue"]] |
方法一:使用flatten()展平后聚合
在聚合时对name列调用flatten(),把分组内所有列表的元素展平后再聚合:
result = df.group_by('id').agg(pl.col('name').flatten())
执行后得到期望的结果:
| id | name |
|---|---|
| 1 | ["Bob", "Mary", "Sue"] |
方法二:使用list.concat()合并列表
用Polars的list.concat()函数直接合并分组内的所有列表,也能实现相同效果:
result = df.group_by('id').agg(pl.col('name').list.concat())
内容的提问来源于stack exchange,提问作者bwooster
相关产品推荐
相关产品推荐

