如何将Polars DataFrame的列表列展开为多行(Unnest操作)
解决Polars列表列展开问题
你遇到的unnest报错是因为这个方法专门用于struct类型列,而你的b列是列表类型,所以不适用。要实现列表列的行展开,直接用Polars的explode方法就行:
import polars as pl df = pl.DataFrame({'a':[1,2,3], 'b':[['a','b'],['a'],['c','d']]}) result_df = df.explode('b') print(result_df)
执行后输出就是你想要的格式:
┌─────┬─────┐ │ a ┆ b │ │ --- ┆ --- │ │ i64 ┆ str │ ╞═════╪═════╡ │ 1 ┆ "a" │ │ 1 ┆ "b" │ │ 2 ┆ "a" │ │ 3 ┆ "c" │ │ 3 ┆ "d" │ └─────┴─────┘
如果需要同时展开多个列表列,直接把列名放进列表传入explode即可,比如df.explode(['b', 'c']);另外explode默认会保留原列表为空的行,要是想忽略空列表的行,可以加参数ignore_nulls=True。
内容的提问来源于stack exchange,提问作者kristianp
相关产品推荐
相关产品推荐

