在DataFrame中value_counts的一个基本用途是获取特定值的计数.

如果我有如下df:

DataFrame({"color": ["red", "blue", "red", "green", "blue", "blue"]})

然后,如果我想要Pandas中COLOR=‘red’的计数,我可以简单地使用:

df['color'].value_counts()['red']

这是显而易见的.

在Polars中,Value_Counts()生成一个带有一列 struct 值的df:

┌─────────────┐
│ color       │
│ ---         │
│ struct[2]   │
╞═════════════╡
│ {"green",1} │
│ {"blue",3}  │
│ {"red",2}   │
└─────────────┘

可以使用以下命令将其拆分为具有单独列的df

counts = df.select(pl.col("color").value_counts()).unnest('color')

然后可以使用以下命令获得所需的值

counts.select(pl.col('count').filter(pl.col('color') == 'red')).item()

同样,可以使用group_by('color').len()来代替VALUE_COUNTS

对于如此频繁的要求,这一切似乎相当复杂. 有没有一种更简单的方法来使用Polars提取单个计数值,以及更一般地访问 struct 值.

推荐答案

如果你不想用unnest,你可以做

df.select(pl.col("color").value_counts()).filter(
    pl.col("color").struct["color"] == "red"
).item()["count"]

这给了我们

2

这是有权衡的-没有索引为可伸缩性打开了更多的大门,但不可否认的是,一些操作会变得更加冗长

Python相关问答推荐

如何使用Google Gemini API为单个提示生成多个响应?

如何调整spaCy token 化器,以便在德国模型中将数字拆分为行末端的点

如何在msgraph.GraphServiceClient上进行身份验证?

PMMLPipeline._ fit()需要2到3个位置参数,但给出了4个位置参数

为什么默认情况下所有Python类都是可调用的?

基于字符串匹配条件合并两个帧

Python键入协议默认值

运输问题分支定界法&

Pandas计数符合某些条件的特定列的数量

mypy无法推断类型参数.List和Iterable的区别

当我try 在django中更新模型时,模型表单数据不可见

将pandas导出到CSV数据,但在此之前,将日期按最小到最大排序

Pandas:计算中间时间条目的总时间增量

如何找出Pandas 图中的连续空值(NaN)?

在用于Python的Bokeh包中设置按钮的样式

numpy数组和数组标量之间的不同行为

Python:从目录内的文件导入目录

Regex用于匹配Python中逗号分隔的AWS区域

来自任务调度程序的作为系统的Python文件

PYODBC错误(SQL包含-26272个参数标记,但提供了235872个参数,HY 000)