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

使用Pandas合并CSV中汽车模型重复行的技术求助

解决Pandas合并同车型CSV行的问题

嗨,我懂你现在的困扰啦——你有两行同车型的数据,想要合并成一行,把对应列里的有效数值(也就是非零的那个)保留下来对吧?之前用Pandas的groupby没成功,大概率是细节没处理好,我给你一步步搞定:

第一步:读取CSV文件(处理分隔符空格)

你的CSV用|分隔,但每个|前后还有空格,直接用sep='|'会导致列里带空格,groupby的时候会把看似相同的车型当成不同项。所以读取时要处理这个问题:

import pandas as pd

# 读取CSV,处理|前后的任意空格,同时指定无表头
df = pd.read_csv('你的文件名.csv', sep='\s*\|\s*', header=None, engine='python')
# 给列命名方便后续操作(你也可以根据实际需求修改列名)
df.columns = ['车辆ID', '车型名称', '参数3', '参数4', '参数5', '参数6', '参数7', '参数8']

第二步:分组并聚合(取每列最大值)

看你的需求,合并后要保留每列的非零值,这刚好可以用max()聚合函数——因为0和9的最大值是9,35和0的最大值是35,完全符合你的预期:

# 按车型名称分组,同时保留其他列的最大值,as_index=False避免把车型变成索引
merged_df = df.groupby('车型名称', as_index=False).max()

第三步:输出结果

现在你可以打印结果或者保存回CSV:

# 打印合并后的结果,用|分隔
print(merged_df.to_csv(sep='|', index=False))
# 保存到新的CSV文件
merged_df.to_csv('合并后的文件.csv', sep='|', index=False)

为什么之前可能失败?

  • 没处理|前后的空格:导致车型名称列带多余空格,groupby无法识别为同一组
  • 用错了聚合函数:比如用sum()虽然也能得到类似结果,但max()更贴合你“保留有效非零值”的需求
  • 没设置as_index=False:分组后车型会变成索引,输出格式不符合你的预期

执行完上面的代码,就能得到你想要的结果:

101|land rover 90 2.5 td 4X4|148|1|0.68|0.0068|9|35

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 17:07:53