如何获取极坐标数据框中每组中最流行的类别?

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

任务是为“a”确定的每个组计算“b”列中频率最高的类别。下面是一个具有所需输出的示例,使用 pandas 和 numpy 计算。

import polars as pl
import numpy as np
di = [
 {'a': 1, 'b': 'x'},
 {'a': 1, 'b': 't'},
 {'a': 1, 'b': 't'},
 {'a': 2, 'b': 'y'},
 {'a': 2, 'b': 'z'},
 {'a': 2, 'b': 'z'},
 {'a': 3, 'b': 'u'},
 {'a': 3, 'b': 'u'}
]

def most_prevalent(group: pd.DataFrame) -> np.ndarray:
    values, counts = np.unique(group, return_counts=True)
    return values[np.argmax(counts)]

print(pl.DataFrame(di).to_pandas().groupby("a").apply(most_prevalent).to_markdown(headers=["a", "b"]))

输出:

|   a | b   |
|----:|:----|
|   1 | t   |
|   2 | z   |
|   3 | u   |

任何提示表示赞赏。谢谢

python-polars
1个回答
4
投票

在咨询了 gpt4 实例后,发现 Polars 确实有一个

.mode()
。 那么答案就是:

pl.DataFrame(di).group_by("a").agg(pl.col("b").mode()).sort("a")
© www.soinside.com 2019 - 2024. All rights reserved.