如何将Polars数据框中Cabin列拆分后转为指定类型多列
Polars拆分Cabin列并转换格式的解决方案
完整代码实现
train = pl.from_repr(""" ┌───────┐ │ Cabin │ │ --- │ │ str │ ╞═══════╡ │ B/0/P │ │ F/0/S │ │ A/0/S │ │ A/0/S │ │ F/1/S │ └───────┘ """) # 基于你已完成的拆分操作,继续执行以下步骤 result = ( train .select(pl.col("Cabin").str.split(by="/")) .unnest("Cabin") .rename({"field_0": "A", "field_1": "B", "field_2": "C"}) .with_columns(pl.col("B").cast(pl.Int8)) ) print(result)
分步解释
- 展开列表列为多列:调用
unnest("Cabin"),将拆分得到的列表类型列直接拆分为3个独立的字符串列,Polars会自动命名为field_0、field_1、field_2。 - 重命名列:用
rename()方法把默认列名替换为你需要的A、B、C。 - 转换列类型:通过
cast(pl.Int8)将B列从字符串类型转换为8位整数类型(i8),匹配预期输出的格式。
执行后输出结果与你预期的完全一致:
shape: (5, 3) ┌─────┬─────┬─────┐ │ A ┆ B ┆ C │ │ --- ┆ --- ┆ --- │ │ str ┆ i8 ┆ str │ ╞═════╪═════╪═════╡ │ B ┆ 0 ┆ P │ │ F ┆ 0 ┆ S │ │ A ┆ 0 ┆ S │ │ A ┆ 0 ┆ S │ │ F ┆ 1 ┆ S │ └─────┴─────┴─────┘
内容的提问来源于stack exchange,提问作者Regular Tech Guy
相关产品推荐
相关产品推荐

