如何水平组合极坐标中的列?

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

我正在尝试使用 python Polars 将多列合并为 1 列。但是我似乎没有找到一种(优雅的)方法将列组合成列表。

我只需要将 b - e 列合并为 1 列。 a 列需要保持原样。我尝试使用

map_elements
来实现这一目标。尽管事实上这不起作用,但它也很慢,而且可能不是最好的方法。

有人可以帮助我如何实现这个结果吗?

我拥有的数据框:

df = pl.from_repr("""
┌─────┬─────┬─────┬─────┬─────┐
│ a   ┆ b   ┆ c   ┆ d   ┆ e   │
│ --- ┆ --- ┆ --- ┆ --- ┆ --- │
│ f64 ┆ f64 ┆ f64 ┆ f64 ┆ f64 │
╞═════╪═════╪═════╪═════╪═════╡
│ 0.1 ┆ 1.1 ┆ 2.1 ┆ 3.1 ┆ 4.1 │
│ 0.2 ┆ 1.2 ┆ 2.2 ┆ 3.2 ┆ 4.2 │
│ 0.3 ┆ 1.3 ┆ 2.3 ┆ 3.3 ┆ 4.3 │
└─────┴─────┴─────┴─────┴─────┘
""")

我需要的结果:

shape: (3, 2)
┌─────┬──────────────────────┐
│ a   ┆ value                │
│ --- ┆ ---                  │
│ f64 ┆ list[f64]            │
╞═════╪══════════════════════╡
│ 0.1 ┆ [1.1, 2.1, 3.1, 4.1] │
│ 0.2 ┆ [1.2, 2.2, 3.2, 4.2] │
│ 0.3 ┆ [1.3, 2.3, 3.3, 4.3] │
└─────┴──────────────────────┘
python dataframe python-polars
1个回答
5
投票

使用

concat_list

df.select('a', value=pl.concat_list(pl.exclude('a')))
© www.soinside.com 2019 - 2024. All rights reserved.