如何在Python中对CSV相同首列对应次列值求和并生成新文件
解决CSV首列去重并求和次列的问题
嘿,我来帮你搞定这个CSV处理的需求!你想要把首列值相同的条目合并,只保留一条并把对应次列的所有值求和,这个用pandas的groupby完全能实现,不过看你贴的代码片段里有几个容易踩坑的小问题,比如groupbby是拼写错误(应该是groupby),而且手动初始化空数组再转DataFrame的方式可能不是读取CSV的正确姿势,这大概率是你报错的原因之一。
我给你整理了一套完整的正确流程,还有代码示例:
步骤1:正确读取CSV文件
别手动初始化空数组啦,直接用pandas的read_csv读取你的原始CSV,这样能避免数据类型不匹配或者数据丢失的问题:
import pandas as pd # 替换成你的CSV文件路径 df = pd.read_csv('你的输入文件.csv')
步骤2:分组求和并去重
用groupby按首列分组,然后对次列求和,记得加上as_index=False,这样分组的首列会保持为普通列,而不是变成索引:
# 把'First'替换成你首列的实际列名,'Second'替换成次列的列名 merged_df = df.groupby('First', as_index=False)['Second'].sum()
步骤3:导出新的CSV文件
把处理后的结果导出成新的CSV,加上index=False避免生成多余的索引列:
merged_df.to_csv('你的输出文件.csv', index=False)
可能的报错原因排查
如果之前用groupby时报错,大概率是这几个问题:
- 拼写错误:你写的
groupbby多了一个b,正确的是groupby,这个小错误会直接触发语法报错; - 数据类型不兼容:如果你的次列(比如'Second')是字符串类型,求和操作会失败,这时候可以先转换数据类型:
# 把次列转换成数值型,无法转换的会变成NaN,你可以根据需求处理这些NaN df['Second'] = pd.to_numeric(df['Second'], errors='coerce') - 手动初始化DataFrame的问题:你之前用
np.empty创建的空数组和实际CSV的数据不匹配,直接读取CSV才是更稳妥的方式。
内容的提问来源于stack exchange,提问作者clayton groth
相关产品推荐
相关产品推荐

