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

如何统计DataFrame满足条件的行数并生成指定结构的新DataFrame

嘿,我来帮你搞定这两个Pandas数据处理的问题,都是日常分析里高频用到的操作:

1. 统计DataFrame中满足条件的行数

这里有几种实用的方法,按需选择就行:

  • 布尔索引求和法:先构造一个布尔条件(满足条件的行返回True,否则False),然后对这个布尔序列求和——因为Pandas会把True当作1,False当作0,求和结果就是符合条件的行数。
    举个例子,要统计df['age'] > 18的行数:
    (df['age'] > 18).sum()
    
    如果是多条件组合,记得用&表示“且”、|表示“或”,每个条件要加括号避免运算优先级问题:
    ((df['score'] >= 60) & (df['score'] <= 100) & (df['grade'] == 'A')).sum()
    
  • query方法+长度统计:用df.query()写自然语言风格的条件,然后取结果的行数,可读性更强:
    # 两种方式都能拿到行数
    len(df.query("score >=60 and score <=100 and grade == 'A'"))
    # 或者用shape[0]直接取行数
    df.query("score >=60 and score <=100 and grade == 'A'").shape[0]
    
2. 生成统计特定条件的DataFrame B

针对你说的需求——从DataFrame A生成3列的B,每列对应A的a、b、c列中满足「值在5-10之间(5≤i≤10)且z列等于1」的行数——这里有两种简洁的实现方式:

方法一:封装函数+逐个计算(清晰易懂)

先定义一个通用的统计函数,避免重复写相同的逻辑,然后分别计算a、b、c列的符合条件行数,最后构造B:

import pandas as pd

# 假设你的DataFrame A已经存在
# 先定义过滤条件:z列等于1
z_condition = A['z'] == 1

def count_valid_column(col):
    # 组合条件:列值在5-10之间,且z列等于1
    return ((col >= 5) & (col <= 10) & z_condition).sum()

# 计算各列的统计值
count_a = count_valid_column(A['a'])
count_b = count_valid_column(A['b'])
count_c = count_valid_column(A['c'])

# 构造DataFrame B,注意要把统计值放在列表里,这样生成的是一行数据
B = pd.DataFrame({'a': [count_a], 'b': [count_b], 'c': [count_c]})

方法二:用apply批量处理(更简洁)

直接对A的a、b、c列批量应用统计逻辑,再转成DataFrame:

import pandas as pd

z_condition = A['z'] == 1

# 选择a、b、c列,对每列应用统计逻辑
stats_series = A[['a', 'b', 'c']].apply(
    lambda col: ((col >=5) & (col <=10) & z_condition).sum()
)

# 把Series转成一行的DataFrame,就是我们要的B
B = stats_series.to_frame().T

举个实际例子验证

假设你的A是这样的:

A = pd.DataFrame({
    'a': [3, 7, 6, 8],
    'b': [12, 9, 4, 10],
    'c': [5, 11, 7, 6],
    'z': [1, 1, 0, 1]
})

按照规则统计:

  • a列:第2行(7,z=1)、第4行(8,z=1)符合条件,计数2
  • b列:第2行(9,z=1)、第4行(10,z=1)符合条件,计数2
  • c列:第1行(5,z=1)、第4行(6,z=1)符合条件,计数2
    生成的B就是:
a  b  c
0  2  2  2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:48:02