You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按col1分组统计col3≥95时col2中1和0的数量?

解决方法

先筛选出col3 ≥ 95的数据集,再按col1分组统计col2中1和0的数量,以下是两种简洁的实现方式:

方法一:groupby + value_counts

# 过滤出col3≥95的数据
filtered_df = df[df['col3'] >= 95]
# 按col1分组,统计每组col2的取值数量,空值用0填充
result = filtered_df.groupby('col1')['col2'].value_counts().unstack(fill_value=0)

运行后会生成一个结构化表格:行对应col1的各个取值(NAME、CITY、STATE),列对应0和1,单元格是对应分组下的统计数量。

方法二:pd.crosstab一步生成结果

import pandas as pd

# 直接用交叉表完成过滤+分组统计
result = pd.crosstab(
    index=df[df['col3'] >= 95]['col1'],
    columns=df[df['col3'] >= 95]['col2'],
    dropna=False
).fillna(0)

这种方式无需分步处理,直接输出和方法一一致的统计结果。

针对你的示例数据,最终结果如下:

col101
CITY01
NAME02
STATE01

你之前写的过滤条件逻辑有误,应该先锁定col3≥95的行,再按col1分组统计,而不是用|(或逻辑)关联条件。

内容的提问来源于stack exchange,提问作者Cosmo Boy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 16:15:39