任务是为“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 |
任何提示表示赞赏。谢谢
.mode()
。
那么答案就是:
pl.DataFrame(di).group_by("a").agg(pl.col("b").mode()).sort("a")