极坐标按行计算方差

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

我有以下数据框

 df = pl.DataFrame({
     "col1": [1, 2, 3],
     "col2": [4, 5, 6],
     "col3": [7, 8, 9],
     "col4": ["a", "v", "b"], })

我想添加一列,其中包含除 col4 之外的所有列的方差。 到目前为止,我发现这可能是极坐标中缺乏水平计算的解决方法:

df = ((_df:=df.with_row_index('i')).join(_df.melt('i').group_by('i').agg(pl.col('value').var()), on='i').sort('i').drop('i'))

然而,只有当所有列都是数字时才会出现这种情况。有没有办法排除 col4 但将其放在最终的数据框中?

python-polars
1个回答
0
投票

你可以使用

list.var()

import polars.selectors as cs

df.with_columns(var = pl.concat_list(cs.numeric()).list.var())

┌──────┬──────┬──────┬──────┬─────┐
│ col1 ┆ col2 ┆ col3 ┆ col4 ┆ var │
│ ---  ┆ ---  ┆ ---  ┆ ---  ┆ --- │
│ i64  ┆ i64  ┆ i64  ┆ str  ┆ f64 │
╞══════╪══════╪══════╪══════╪═════╡
│ 1    ┆ 4    ┆ 7    ┆ a    ┆ 9.0 │
│ 2    ┆ 5    ┆ 8    ┆ v    ┆ 9.0 │
│ 3    ┆ 6    ┆ 9    ┆ b    ┆ 9.0 │
└──────┴──────┴──────┴──────┴─────┘
© www.soinside.com 2019 - 2024. All rights reserved.