如果我有这个 Dataframe :
pl.DataFrame(dict(x=[0, 1, 2, 3], y=[5, 2, 3, 3],z=[4,7,8,2]))
shape: (4, 3)
┌─────┬─────┬─────┐
│ x ┆ y ┆ z │
│ --- ┆ --- ┆ --- │
│ i64 ┆ i64 ┆ i64 │
╞═════╪═════╪═════╡
│ 0 ┆ 5 ┆ 4 │
│ 1 ┆ 2 ┆ 7 │
│ 2 ┆ 3 ┆ 8 │
│ 3 ┆ 3 ┆ 2 │
└─────┴─────┴─────┘
我想求出x中y为max时的值,然后再求出x中z为max时的值,再重复几百列,最后得到这样的结果:
shape: (2, 2)
┌────────┬─────────┐
│ column ┆ x_value │
│ --- ┆ --- │
│ str ┆ i64 │
╞════════╪═════════╡
│ y ┆ 0 │
│ z ┆ 2 │
└────────┴─────────┘
或
shape: (1, 2)
┌─────┬─────┐
│ y ┆ z │
│ --- ┆ --- │
│ i64 ┆ i64 │
╞═════╪═════╡
│ 0 ┆ 2 │
└─────┴─────┘
什么是最好的极地方式做到这一点?
1条答案
按热度按时间0lvr5msh1#
您可以:
pl.exclude("x")
,选择所有列减去x
.arg_max()
以获取每个选定列的最大索引。pl.col("x").take()
,以获取每个索引处的x
值。pl.concat_list()
以创建所有值的列表。要添加列名,您可以:
x一个一个一个一个x一个一个二个x
其他结果的可能方法:
一个三个三个一个