如何将Polars数据框中的字符串列拆分为嵌套列表?
如何将Polars数据框中的字符串列拆分为嵌套列表?
嘿,我来帮你搞定这个问题!先看你的示例数据,这个DataFrame里的test列其实是一行包含换行分隔的长字符串,咱们分两步操作就能把它转成嵌套列表的形式:
第一步:拆分换行,把长字符串拆成独立行
先用str.split_explode()方法,以换行符\n为分隔符,把原来的单行数据拆成单独的行,这样每一行就是一组逗号分隔的字符串:
import polars as pl pl.Config(fmt_table_cell_list_len=6, fmt_str_lengths=100) df = pl.DataFrame({'test': "A,B,C,1\nD,E,F,2\nG,H,I,3\nJ,K,L,4"}) # 拆分换行 df = df.with_columns(pl.col("test").str.split_explode("\n"))
这一步执行后,DataFrame会变成这样:
shape: (4, 1) ┌─────────┐ │ test │ │ --- │ │ str │ ╞═════════╡ │ A,B,C,1 │ │ D,E,F,2 │ │ G,H,I,3 │ │ J,K,L,4 │ └─────────┘
第二步:拆分逗号,把每行字符串转成列表
接着用str.split()方法,把每行的字符串按逗号,拆分,这样就得到每个元素都是列表的列,也就是你想要的嵌套列表结构:
# 拆分逗号为列表 df = df.with_columns(pl.col("test").str.split(","))
最终的DataFrame结果如下:
shape: (4, 1) ┌─────────────────┐ │ test │ │ --- │ │ list[str] │ ╞═════════════════╡ │ ["A", "B", "C", "1"] │ │ ["D", "E", "F", "2"] │ │ ["G", "H", "I", "3"] │ │ ["J", "K", "L", "4"] │ └─────────────────┘
如果你想直接提取成Python原生的“列表的列表”,只需要执行df["test"].to_list(),就能得到:
[['A', 'B', 'C', '1'], ['D', 'E', 'F', '2'], ['G', 'H', 'I', '3'], ['J', 'K', 'L', '4']]
另外,你也可以把两步合并成一行表达式,更简洁:
df = df.with_columns(pl.col("test").str.split("\n").explode().str.split(","))
这样就完美解决你的需求啦!
内容来源于stack exchange
相关产品推荐
相关产品推荐

