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

如何使用Python Pandas合并含共同item_id列的CSV文件并获取指定列

如何正确合并具有共同主键的CSV文件?

你遇到的问题很典型——pd.concat()是纵向堆叠数据(把两个表上下拼在一起),而你需要的是基于共同主键(item_id)横向合并,把不同表中同一item的信息整合到一行里。这也是为什么concat后会出现重复的item_id和NaN值:堆叠后同一item会出现两次,且每个表独有的列在另一表的行里显示为NaN。

解决方案:使用pd.merge()替代pd.concat()

pd.merge()是pandas中专门用于按主键合并表格的方法,正好匹配你的需求。下面是修改后的完整代码,能得到你期望的结果:

import pandas as pd

# 生成测试数据(这部分和你的代码一致)
item_id = [1342, 35513, 5135, 5351]
weight = [10, 20, 30, 40]
location = ['A', 'B', 'B', 'A']
fcsv = {'id': item_id, 'loc': location, 'weight': weight}
fcsv_df = pd.DataFrame(fcsv)

item_id = [35513, 1342, 5135, 5351]
weight = [20, 10, 30, 40]
price = [10555, 25550, 35550, 4550]
fcsv2 = {'id': item_id, 'weight': weight, 'price': price}
fcsv2_df = pd.DataFrame(fcsv2)

# 核心:用merge按id合并两个表
merged_df = pd.merge(fcsv_df, fcsv2_df, on='id', how='inner')

# 处理重复的weight列(两个表都有weight,merge后会自动加_x/_y后缀)
# 因为你的测试数据中weight值一致,我们保留其中一个并重命名
merged_df = merged_df.drop(columns='weight_y')
merged_df = merged_df.rename(columns={'weight_x': 'weight', 'loc': 'location'})

# 调整列顺序到你期望的格式
merged_df = merged_df[['id', 'weight', 'location', 'price']]

# 输出结果
print(merged_df)

代码解释

  1. pd.merge()参数说明:
    • on='id':指定按id列(对应你的item_id)作为匹配主键
    • how='inner':只保留两个表中都存在的id(你的测试数据所有id都匹配,用outer也可以,但inner更严谨)
  2. 处理重复列:因为两个表都有weight列,merge后会生成weight_x(来自第一个表)和weight_y(来自第二个表),这里测试数据值一致,所以删除其中一个并重命名为weight。如果实际场景中weight值不同,你可以根据需求选择保留某一个,或者做聚合(比如取平均值)。
  3. 调整列顺序:把列调整为你想要的id、weight、location、price顺序。

最终输出结果

运行代码后会得到你期望的数据集:

id  weight location  price
0    1342      10        A  25550
1  35513      20        B  10555
2    5135      30        B  35550
3    5351      40        A   4550

额外提示

如果你的实际CSV文件数量更多(不止2个),可以先把所有CSV文件读入DataFrame列表,然后用reduce函数循环merge:

from functools import reduce

# 假设你有多个CSV文件路径
csv_files = ['csv1.csv', 'csv2.csv', 'csv3.csv']
df_list = [pd.read_csv(file) for file in csv_files]

# 循环合并所有DataFrame
final_df = reduce(lambda left, right: pd.merge(left, right, on='id', how='inner'), df_list)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 19:08:13