簡體   English   中英

如何在極坐標中將一列的內容拆分為多列 dataframe

[英]How to split the contents of a column into multiple columns inside a polars dataframe

如果我的 dataframe 中有字符串列,即“Cabin”,包含如下所示的值:

Series: 'Cabin' [str]
[
    "B/0/P"
    "F/0/S"
    "A/0/S"
    "A/0/S"
    "F/1/S"
]

我想知道將'Cabin'列拆分為多個列的過程,如下所示:

一種 C
海峽 i8 海峽
“乙” 0 “P”
“F” 0 “S”
“一種” 1個 “S”
“C” 1個 “S”

我通過train.select(pl.col("Cabin").str.split(by="/")).to_series()對列進行了初始拆分操作以獲得

Series: 'Cabin' [list]
[
    ["B", "0", "P"]
    ["F", "0", "S"]
    ["A", "0", "S"]
    ["A", "0", "S"]
    ["F", "1", "S"]
]

所以我想知道下一步如何獲得我想要的 output,如上所示。

你越來越近了。 您可以索引到此列表以創建新列,或者使用split_exact來創建struct

>>> s = pl.Series("Cabin", ["B/0/P", "F/0/S", "A/0/S"])
>>> train = s.to_frame()
>>> train
shape: (3, 1)
┌───────┐
│ Cabin │
│ ---   │
│ str   │
╞═══════╡
│ B/0/P │
├╌╌╌╌╌╌╌┤
│ F/0/S │
├╌╌╌╌╌╌╌┤
│ A/0/S │
└───────┘

索引到列表中(相應地添加更多表達式get(1)get(2) ):

>>> train.with_column(pl.col("Cabin").str.split("/").arr.get(0))
shape: (3, 1)
┌───────┐
│ Cabin │
│ ---   │
│ str   │
╞═══════╡
│ B     │
├╌╌╌╌╌╌╌┤
│ F     │
├╌╌╌╌╌╌╌┤
│ A     │
└───────┘

分裂精確解:

>>> train.select(pl.col("Cabin").str.split_exact("/", 2)).unnest("Cabin")
shape: (3, 3)
┌─────────┬─────────┬─────────┐
│ field_0 ┆ field_1 ┆ field_2 │
│ ---     ┆ ---     ┆ ---     │
│ str     ┆ str     ┆ str     │
╞═════════╪═════════╪═════════╡
│ B       ┆ 0       ┆ P       │
├╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┤
│ F       ┆ 0       ┆ S       │
├╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┤
│ A       ┆ 0       ┆ S       │
└─────────┴─────────┴─────────┘

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM