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

CSV文件解析列值处理结果不符预期,求技术解决方案

修正CSV解析与数据聚合的问题

问题分析

原代码的核心错误在于:

  • 将size_gb纳入分组索引,导致同表下不同size_gb的记录被强制拆分,无法实现多个partition合并的需求
  • 聚合逻辑不符合预期,错误地对每个独立的size_gb值求和,而非按表分组累加合并partition

修正后的代码

import pandas as pd
import numpy as np

# 读取CSV数据
df = pd.read_csv("F:\\sales_data.csv", header=0)

# 定义分组处理函数:累加size_gb,达到阈值则合并partition
def process_group(group):
    rows = []
    current_sum = 0
    current_partitions = []
    for _, row in group.iterrows():
        current_sum += row['size_gb']
        current_partitions.append(str(row['partition']))
        # 累计和达到10时生成合并记录
        if current_sum >= 10:
            rows.append({
                'priority': row['priority'],
                'db_name': row['db_name'],
                'tbl_name': row['tbl_name'],
                'partition': ';'.join(current_partitions),
                'sum_gb': current_sum
            })
            current_sum = 0
            current_partitions = []
    # 处理剩余未达阈值的记录
    if current_sum > 0:
        rows.append({
            'priority': group['priority'].iloc[0],
            'db_name': group['db_name'].iloc[0],
            'tbl_name': group['tbl_name'].iloc[0],
            'partition': ';'.join(current_partitions),
            'sum_gb': current_sum
        })
    return pd.DataFrame(rows)

# 按优先级、库名、表名分组处理数据
processed_df = df.groupby(['priority', 'db_name', 'tbl_name'], group_keys=False).apply(process_group)

# 根据sum_gb计算t_size
processed_df['t_size'] = np.where(processed_df['sum_gb'] >= 10, 'XL',
                                  np.where(processed_df['sum_gb'] < 3, 'S', 'M'))

# 整理输出列顺序
result_df = processed_df[['priority', 'db_name', 'tbl_name', 'partition', 't_size']]
print(result_df)

修正说明

  1. 分组逻辑调整:仅按priority、db_name、tbl_name分组,确保同表的所有partition被统一处理
  2. 自定义聚合逻辑:通过遍历组内记录累加size_gb,当累计值≥10时合并对应partition并生成记录,同时处理剩余未达阈值的记录
  3. t_size计算:严格按照预期规则(≥10→XL,<3→S,其余→M)生成分类标签
  4. 列结构匹配:最终输出列顺序与预期完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 10:07:33