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

如何自动化按DataFrame的Brand列各品牌值逐行过滤并完成统计计算

实现方案

你完全不需要手动为每个品牌编写过滤规则,用pandas内置的groupby方法就可以实现自动按Brand列唯一值批量分组统计,比你自己写循环生成掩码的逻辑更简洁、执行效率也更高。

前置数据预处理

你示例中的value列是带千分位分隔符的字符串格式,先转成数值类型方便后续统计计算:

import pandas as pd

# 假设你已经将原始数据读入为df对象
df['value'] = df['value'].str.replace('.', '').astype(int)

方案1:groupby批量统计(推荐)

groupby会自动遍历Brand列所有唯一值,将相同品牌的行归为一组,你只要自定义统计逻辑即可,会自动覆盖所有品牌:

示例:计算每个品牌的平均评分、总价值、评分≥60的占比(百分比)

def calc_stats(group):
    total_count = len(group)
    high_rating_pct = (group['rating'] >= 60).sum() / total_count * 100
    return pd.Series({
        '平均评分': group['rating'].mean(),
        '总价值': group['value'].sum(),
        '高分占比(%)': round(high_rating_pct, 2)
    })

# 按Brand列分组执行统计
stat_result = df.groupby('Brand', as_index=False).apply(calc_stats).reset_index(drop=True)

如果你实际要统计的是主品牌维度(比如示例中的雷诺Renault、雪佛兰Chevrolet,不是完整的品牌+车型组合),先提取主品牌再分组即可:

# 提取主品牌:取Brand列的第一个单词
df['主品牌'] = df['Brand'].str.split().str[0]
# 按主品牌分组统计
stat_result = df.groupby('主品牌', as_index=False).apply(calc_stats).reset_index(drop=True)

方案2:循环过滤实现(仅适合特殊复杂统计场景)

如果你的统计逻辑非常特殊,必须单独处理每个品牌的过滤结果,可以遍历你已经提取的唯一品牌列表,逐个生成过滤掩码:

# 提取Brand列所有唯一值
unique_brands = df['Brand'].unique()
result_list = []

for brand in unique_brands:
    # 生成当前品牌的过滤掩码
    filter_mask = df['Brand'] == brand
    # 过滤得到当前品牌的所有数据行
    brand_data = df[filter_mask]
    # 此处替换为你自己的统计逻辑
    result_list.append({
        '品牌': brand,
        '平均评分': brand_data['rating'].mean(),
        '车型数量': len(brand_data)
    })

# 转换为DataFrame格式
stat_result = pd.DataFrame(result_list)

两种方案都可以自动覆盖Brand列所有存在的品牌,你只需要修改统计逻辑部分为你需要的百分比、求和等计算规则即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:45:03