使用列表元素转置数据框

问题描述 投票:0回答:1

我有一个类似的数据框

┌─────┬────────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┐
│ rul ┆ 647833 ┆ 64783 ┆ 64783 ┆ 64783 ┆ 64720 ┆ 64783 ┆ 64783 ┆ 64783 ┆ 64682 ┆ … ┆ 64681 ┆ 64681 ┆ 64681 ┆ 64719 ┆ 64681 ┆ 64681 ┆ 64682 ┆ 64682 ┆ 64682 ┆ 64682 │
│ e   ┆ ---    ┆ 0     ┆ 4     ┆ 1     ┆ 1     ┆ 2     ┆ 5     ┆ 6     ┆ 8     ┆   ┆ 7     ┆ 2     ┆ 3     ┆ 8     ┆ 5     ┆ 6     ┆ 1     ┆ 3     ┆ 2     ┆ 4     │
│ --- ┆ list[s ┆ ---   ┆ ---   ┆ ---   ┆ ---   ┆ ---   ┆ ---   ┆ ---   ┆ ---   ┆   ┆ ---   ┆ ---   ┆ ---   ┆ ---   ┆ ---   ┆ ---   ┆ ---   ┆ ---   ┆ ---   ┆ ---   │
│ str ┆ tr]    ┆ list[ ┆ list[ ┆ list[ ┆ list[ ┆ list[ ┆ list[ ┆ list[ ┆ list[ ┆   ┆ list[ ┆ list[ ┆ list[ ┆ list[ ┆ list[ ┆ list[ ┆ list[ ┆ list[ ┆ list[ ┆ list[ │
│     ┆        ┆ str]  ┆ str]  ┆ str]  ┆ str]  ┆ str]  ┆ str]  ┆ str]  ┆ str]  ┆   ┆ str]  ┆ str]  ┆ str]  ┆ str]  ┆ str]  ┆ str]  ┆ str]  ┆ str]  ┆ str]  ┆ str]  │
╞═════╪════════╪═══════╪═══════╪═══════╪═══════╪═══════╪═══════╪═══════╪═══════╪═══╪═══════╪═══════╪═══════╪═══════╪═══════╪═══════╪═══════╪═══════╪═══════╪═══════╡
│ cs_ ┆ ["Info ┆ ["Inf ┆ ["Inf ┆ ["Inf ┆ ["Cri ┆ ["Inf ┆ ["Inf ┆ ["Inf ┆ ["Inf ┆ … ┆ ["Inf ┆ ["Inf ┆ ["Inf ┆ ["Cri ┆ ["Inf ┆ ["Inf ┆ ["Inf ┆ ["Inf ┆ ["Inf ┆ ["Inf │
│ rul ┆ ",     ┆ o",   ┆ o",   ┆ o",   ┆ tical ┆ o",   ┆ o",   ┆ o",   ┆ o",   ┆   ┆ o",   ┆ o",   ┆ o",   ┆ tical ┆ o",   ┆ o",   ┆ o",   ┆ o",   ┆ o",   ┆ o",   │
│ e_d ┆ "Ok"]  ┆ "Ok"] ┆ "Ok"] ┆ "Ok"] ┆ ",    ┆ "Ok"] ┆ "Ok"] ┆ "Ok"] ┆ "Ok"] ┆   ┆ "Ok"] ┆ "Ok"] ┆ "Ok"] ┆ ",    ┆ "Ok"] ┆ "Ok"] ┆ "Ok"] ┆ "Ok"] ┆ "Ok"] ┆ "Ok"] │
│ ata ┆        ┆       ┆       ┆       ┆ "No   ┆       ┆       ┆       ┆       ┆   ┆       ┆       ┆       ┆ "No   ┆       ┆       ┆       ┆       ┆       ┆       │
│ _ch ┆        ┆       ┆       ┆       ┆ data  ┆       ┆       ┆       ┆       ┆   ┆       ┆       ┆       ┆ data  ┆       ┆       ┆       ┆       ┆       ┆       │
│ eck ┆        ┆       ┆       ┆       ┆ avail ┆       ┆       ┆       ┆       ┆   ┆       ┆       ┆       ┆ avail ┆       ┆       ┆       ┆       ┆       ┆       │
│     ┆        ┆       ┆       ┆       ┆ iab…  ┆       ┆       ┆       ┆       ┆   ┆       ┆       ┆       ┆ iab…  ┆       ┆       ┆       ┆       ┆       ┆       │
└─────┴────────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┘

我只是想进行转置,因此规则将是列和当前列的行。 由于极坐标转置似乎无法与列表类型一起使用,我尝试将列表转换为逗号分隔的字符串,例如

df = site_df.with_columns([pl.all().exclude("cs_rule_data_check").arr.join(",")])

但我不断

polars.exceptions.SchemaError:无效系列 dtype:预期

FixedSizeList
,得到
list[str]

谢谢

python-polars polars
1个回答
0
投票
df = pl.DataFrame({
    "rule": ["cs_rule_data_check"],
    "647833": [["Info","Ok"]]
})
shape: (1, 2)
┌────────────────────┬────────────────┐
│ rule               ┆ 647833         │
│ ---                ┆ ---            │
│ str                ┆ list[str]      │
╞════════════════════╪════════════════╡
│ cs_rule_data_check ┆ ["Info", "Ok"] │
└────────────────────┴────────────────┘
df.unpivot(index="rule").pivot(on="rule", index="variable")
shape: (1, 2)
┌──────────┬────────────────────┐
│ variable ┆ cs_rule_data_check │
│ ---      ┆ ---                │
│ str      ┆ list[str]          │
╞══════════╪════════════════════╡
│ 647833   ┆ ["Info", "Ok"]     │
└──────────┴────────────────────┘
© www.soinside.com 2019 - 2024. All rights reserved.