如何用Python Pandas合并相同jobID的数据行并累加clicks?
解决方法:用Pandas分组聚合合并重复行并累加点击量
嘿,你完全不用逐个处理重复的jobID行!Pandas的groupby() + sum()组合就是专门解决这类分组聚合需求的,效率超高,不管重复行有多少都能一次性搞定。
具体步骤和代码示例:
读取CSV文件
先把你的CSV数据读进DataFrame里,如果你的CSV没有表头,记得手动指定列名:import pandas as pd # 读取无表头的CSV,手动指定列名 df = pd.read_csv('your_data.csv', header=None, names=['jobID', 'industry', 'clicks']) # 如果CSV本身自带表头(第一行是jobID,industry,clicks),直接用下面这句: # df = pd.read_csv('your_data.csv')分组并累加点击量
因为每个jobID对应的industry是固定的,我们可以同时按jobID和industry分组(这样更严谨,能避免出现同一jobID对应不同行业的异常数据),然后对clicks列求和:# 分组聚合,as_index=False让分组列保持为普通列,不转为索引 merged_df = df.groupby(['jobID', 'industry'], as_index=False)['clicks'].sum()查看或保存结果
现在你就能得到合并后的目标数据了,要么直接打印查看,要么保存成新的CSV文件:# 打印合并后的数据 print(merged_df) # 输出结果如下: # jobID industry clicks # 0 job1 healthcare 50 # 1 job2 medicine 90 # 保存到新CSV,index=False避免写入多余的索引列 merged_df.to_csv('merged_jobs.csv', index=False)
为什么pd.concat()不适用?
pd.concat()的作用只是把多个DataFrame拼接在一起,它不会做任何聚合或合并重复行的操作,所以用它来处理这个需求就找错工具啦。而groupby()是Pandas专门为分组统计设计的功能,能高效处理大量重复行的聚合计算。
内容的提问来源于stack exchange,提问作者Sunisc
相关产品推荐
相关产品推荐

