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

R语言:统计DataFrame各列中大于120的值的数量

解决DataFrame每列大于120值的统计问题

嘿,我来帮你搞定这个统计需求!你之前得到结果为0的情况,大概率是数据类型的问题或者统计方向搞反了,咱们一步步来解决:

先排查核心问题:数据类型

如果你的DataFrame里某些列是字符串类型(比如导入数据时默认识别成了object),直接和数字120比较会得到错误的布尔结果(比如字符串'130'和120比较会返回False),这就会导致统计出来全是0。

先检查每列的数据类型:

print(df.dtypes)

如果看到列的类型是object,先把它转为数值类型:

import pandas as pd

# 将所有列转为数值,无法转换的内容设为NaN(不影响统计)
df = df.apply(pd.to_numeric, errors='coerce')

两种高效统计每列大于120值数量的方法

方法1:用gt() + sum()(最简洁)

gt(120)会生成一个布尔值DataFrame(大于120的为True,否则为False),然后sum()默认按列求和(True=1,False=0),直接得到每列符合条件的数量:

# 统计每列大于120的值的数量
count_over_120 = df.gt(120).sum()
print(count_over_120)

方法2:用apply() + 自定义逻辑

如果你想更直观地看到筛选过程,可以用apply()对每列单独处理:

count_over_120 = df.apply(lambda col: col[col > 120].count())
print(count_over_120)

为什么你之前得到0?常见坑点

  • 数据类型不匹配:刚才说的字符串列和数字比较的问题,是最常见的原因。
  • 统计方向错了:如果不小心加了axis=1,比如df.gt(120).sum(axis=1),那统计的是每行大于120的数量,而不是每列。
  • 数据里确实没有大于120的值?:不过你说实际情况不符,所以这个可能性很低,优先检查前两个点。

示例演示

假设你有这样的DataFrame:

data = {
    '列1': [110, 130, 150, 90],
    '列2': ['125', '115', '140', '85'],  # 字符串类型
    '列3': [120, 121, 119, 130]
}
df = pd.DataFrame(data)

经过转类型+统计后,输出会是:

列1    2
列2    2
列3    2
dtype: int64

这样就能自动对所有列完成统计啦!如果还有问题,可以看看数据里有没有特殊格式的内容(比如带逗号的数字),转类型时可以额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:02:05