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

Pandas如何统计gt_前缀列值为1时identifier列的唯一值数量

实现代码

方法1:向量化列遍历写法(最简洁)

import pandas as pd

# 示例数据
data = {'identifier': {0: 'a',
  1: 'a',
  3: 'b',
  4: 'b',
  5: 'c'},
 'gt_50': {0: 1, 1: 1, 3: 0, 4: 0, 5: 0},
 'gt_10': {0: 1, 1: 1, 3: 1, 4: 1, 5: 1}}
df = pd.DataFrame(data)

# 核心统计逻辑
result = df.filter(regex=r'^gt_').eq(1).apply(lambda x: df['identifier'][x].nunique())

# 按要求格式输出
for col, cnt in result.items():
    print(f"- {col} {cnt}")

方法2:长宽转换写法(大数据量下性能更优)

如果数据量级较大,推荐用melt+分组统计的写法,避免逐列apply的性能开销:

result = df.melt(
    id_vars='identifier',
    value_vars=df.filter(like='gt_').columns
).query('value == 1').groupby('variable')['identifier'].nunique()

# 输出格式和方法1一致
for col, cnt in result.items():
    print(f"- {col} {cnt}")

逻辑说明

两种写法都无需手动编写循环遍历列,完全基于pandas原生向量化操作实现:

  • 第一步先筛选出所有列名以gt_开头的目标列
  • 第二步匹配目标列值为1的行,关联对应的identifier字段
  • 第三步按原目标列分组,统计每组内identifier的唯一值个数

两种方法运行后都可以得到预期输出:

- gt_50 1
- gt_10 3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:54:05