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

使用Pandas GroupBy按列分组CSV数据时功能失效求解决

Pandas GroupBy功能失效,无法完成CSV格式转换

输入数据格式

输入CSV包含data(日期类型字段)、Period(时段字段)以及多个数值型字段,同一data和Period组合对应多行重复数据。

目标数据格式

按data和Period分组聚合,将同一分组内的各数值字段值合并为列表,每个分组仅保留一行数据。

问题代码

我编写了如下代码,但GroupBy功能未能正常工作:

def grouping():
    df = pd.read_csv("final_data_6.csv")
    df['n'] = df.apply(lambda x: (x['data'], x['Period']), axis=1)
    df.groupby(['data','Period'])['n'].apply(list).reset_index()
    df.to_csv("final_data_9.csv", encoding="utf-8", index=False)

问题分析与解决方案

你的代码存在两个关键问题:

  1. 未接收分组结果:df.groupby(...)操作会生成新的DataFrame,但你没有将这个结果赋值给变量,原df完全未被修改,导致输出的CSV还是原始数据。
  2. 分组逻辑错误:你创建的n列是data和Period的元组,而这两个字段本身就是分组键,对该列聚合列表没有实际意义,应该针对需要合并的数值字段进行聚合操作。

修正后的代码

如果需要将同一data和Period分组下的所有其他字段值合并为列表,使用以下代码:

import pandas as pd

def grouping():
    df = pd.read_csv("final_data_6.csv")
    # 按data和Period分组,对所有其他列执行列表聚合
    grouped_df = df.groupby(['data', 'Period'], as_index=False).agg(list)
    grouped_df.to_csv("final_data_9.csv", encoding="utf-8", index=False)

如果仅需对特定字段进行聚合,可指定字段名,例如只处理字段A和字段B:

grouped_df = df.groupby(['data', 'Period'], as_index=False)[['字段A', '字段B']].agg(list)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 02:05:29