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

使用Counter类打印指定字典键及统计DataFrame中False结果遇问题

解决Counter统计False数量的问题

核心问题分析

你的代码里Counter['False']是错误写法:Counter是类,必须传入可迭代对象(比如你的df['cols2']序列)创建实例后,才能通过键False获取对应计数。另外生成cols2的逻辑也可以简化。

修正方案

1. 简化cols2的生成逻辑

用shift()直接比较当前行与前一行的值,比rolling.apply更高效直观,无需额外转换:

df['cols2'] = df['cols1'] == df['cols1'].shift()

结果直接是布尔值:当前值与前一个相等则为True,否则为False。

2. 正确用Counter统计False数量

from collections import Counter

# 生成cols2
df['cols2'] = df['cols1'] == df['cols1'].shift()

# 统计False的总数
false_count = Counter(df['cols2'])[False]
print(false_count)

3. 若坚持原rolling写法的修正版

如果不想改动cols2的生成代码,只需修正Counter部分:

from collections import Counter

df['cols2'] = df['cols1'].rolling(2).apply(lambda x: len(set(x)) != len(x), raw=True).replace({0: False, 1: True})
false_count = Counter(df['cols2'])[False]
print(false_count)

额外优化

如果仅需统计False的数量,无需用Counter,直接用Pandas原生方法更高效:

# 方法1:用value_counts直接取False的计数
false_count = df['cols2'].value_counts()[False]

# 方法2:统计等于False的行数
false_count = (df['cols2'] == False).sum()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 08:02:24