我有一个 Polars 数据框:
df = pl.DataFrame(
{
"nrs": [1, 2, 3, None, 5],
"names": ["foo", "ham", "spam", "egg", None],
"random": np.random.rand(5),
"A": [True, True, False, False, False],
}
)
如何计算
A==True
的行数与 A==False
的行数之间的比率?请注意,A
始终为 True
或 False
。我找到了解决方案,但看起来有点笨拙:
ntrue = df.filter(pl.col('A')==1).shape[0]
ratio = ntrue/(df.shape[0]-ntrue)
您可以如下利用 Polars 的表达式 API。
df.select(pl.col("A").sum() / pl.col("A").not_().sum()).item()
求和是因为 A 是布尔列。如果不是这种情况,您可以将
pl.col("A")
替换为另一个相应的布尔表达式。