通过极坐标数据帧计算 group_by 中正行的百分比

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

我需要计算按

value
列分组的
group
列中正值的百分比。

import polars as pl

df = pl.DataFrame(
    {
        "group": ["A", "A", "A", "A", "A", "B", "B", "B", "B", "B"],
        "value": [2, -1, 3, 1, -2, 1, 2, -1, 3, 2],
    }
)

shape: (10, 2)
┌───────┬───────┐
│ group ┆ value │
│ ---   ┆ ---   │
│ str   ┆ i64   │
╞═══════╪═══════╡
│ A     ┆ 2     │
│ A     ┆ -1    │
│ A     ┆ 3     │
│ A     ┆ 1     │
│ A     ┆ -2    │
│ B     ┆ 1     │
│ B     ┆ 2     │
│ B     ┆ -1    │
│ B     ┆ 3     │
│ B     ┆ 2     │
└───────┴───────┘

A
组中,5个正值中有3个(60%),而在
B
列中,5个正值中有4个(80%)。

这是预期的数据框。

┌────────┬──────────────────┐
│ group  ┆ positive_percent │
│ ---    ┆ ---              │
│ str    ┆ f64              │
╞════════╪══════════════════╡
│ A      ┆ 0.6              │
│ B      ┆ 0.8              │
└────────┴──────────────────┘
python python-polars
1个回答
0
投票
df.group_by("group").agg(
    pl.when(pl.all() > 0).then(1).otherwise(0).sum() / pl.len()
)
© www.soinside.com 2019 - 2024. All rights reserved.