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

在Pandas DataFrame中按Class分组整理车辆品牌与车型数据

问题描述

现有包含车辆类别(Class 1-12)、品牌(Make)、车型(Model)的数据集,需生成符合以下要求的表格:

  • 同一Class下,相同品牌对应的车型合并展示(用逗号分隔)
  • Class列仅在每组首行显示,其余行留空
  • 最终输出12类数据的整理结果

此前尝试的代码存在品牌、车型重复显示,保存CSV时Class列丢失的问题,原代码如下:

import pandas as pd
import numpy as np
from tabulate import tabulate

df = pd.read_excel('data.xlsx')
#df_size = df.shape
df2 = df.drop(['VIN', 'Class Guide Line Item #', 'Asset Type', 'Year', 'Trim','Trim Option 1', 'Trim Option 2','Trim Option 3','Trim Option 4'], axis='columns')
df2.drop_duplicates(inplace=True)
#print(tabulate(df2, headers="keys", showindex="never", tablefmt="fancy_grid"))
df2.head()
df3.groupby(['Class']).agg(list)
df3.groupby(['Class']).agg(pd.Series.tolist)

#df3 = df2.groupby(['Class']).agg(lambda x: list(x))
#print(tabulate(df3, headers="keys", showindex="never", tablefmt="grid"))
df3.head()
#df3.to_csv('newdata.csv', index=False)

期望输出示例:

Class| Make | Model
 | Acura| SLX, TLX
1    | Ford | Fusion
 | Acura| CSX
2    | Ford | F150, Expedition
解决代码
import pandas as pd
from tabulate import tabulate

# 读取原始数据
df = pd.read_excel('data.xlsx')

# 仅保留需要的列并去重,剔除重复的Class-Make-Model组合
df_clean = df[['Class', 'Make', 'Model']].drop_duplicates()

# 先按Class和Make分组,将同一品牌下的车型合并为逗号分隔的字符串
grouped = df_clean.groupby(['Class', 'Make'])['Model'].agg(lambda x: ', '.join(x)).reset_index()

# 处理Class列:同一Class分组内仅首行保留Class值,其余行设为空字符串
grouped['Class'] = grouped.groupby('Class')['Class'].transform(lambda x: x.iloc[0] if x.name == x.iloc[0] else '')

# 打印预览表格
print(tabulate(grouped, headers='keys', showindex=False, tablefmt='grid'))

# 保存整理后的数据到CSV
grouped.to_csv('newdata.csv', index=False)
关键说明
  1. 去重处理:直接筛选核心列后去重,避免无关数据干扰后续分组
  2. 双层分组:先按Class+Make分组合并车型,解决同品牌车型重复的问题
  3. Class列格式化:用transform方法实现同一Class组仅首行显示类别值,其余行留空
  4. CSV保存:index=False确保Class列不会丢失,空值以空字符串形式保留,符合预期格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 14:23:12