我有以下数据框
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'))
你可以使用
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 │
└──────┴──────┴──────┴──────┴─────┘