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

如何用Python匹配两列相似CSV并按ID与item_size填充缺失Cost值?

高效匹配填充CSV数据方案

数据示例

csv1

IDitem_sizeCost
00104.4
00105.5
00128
001210.1

csv2

IDitem_sizeCost
00106.15
00107.22
00105.31
00103.13
00104.72
00127.65
0012224
001213.12
00129.23
001211.13

需求说明

匹配相同ID,找到csv2中与csv1的item_size最接近的值,将对应Cost填充到csv1中,最终输出结构与csv1一致。例如csv1中ID为0010、item_size为4.4的行,匹配csv2同ID下最接近的4.7,填充Cost为2。

当前尝试与问题

已拆分问题为近似值匹配、ID匹配、值填充三部分,实现了近似值匹配脚本:

import numpy as np
 
def closest_value(input_list, input_value):
    arr = np.asarray(input_list)
    i = (np.abs(arr - input_value)).argmin()
    return arr[i]
 
list1 = dataset_1['item_size'].values.tolist()
list2 = dataset_2['item_size'].values.tolist()

for i in range(len(list2)):
    val=closest_value(list1,list2[i])
    print("The closest value to the "+ str(list[i])+" is",val)

尝试用以下代码处理ID匹配,但该方法会生成大量CSV文件,占用过多计算资源:

import pandas as pd

csv1 = pd.read_csv('csv1.csv')
csv2= pd.read_csv('csv2.csv')

csv2[csv2['ID'].duplicated(keep=False)]
csv2.groupby('ID',axis=0).apply(lambda x: x.to_csv(str(x.name) + '.csv'))

现寻求更高效的实现方案。

高效实现方案

可以利用pandas结合numpy,按ID分组后批量处理近似匹配,无需生成中间CSV文件,直接在内存中完成计算:

import pandas as pd
import numpy as np

# 读取数据,指定ID为字符串类型避免自动转数字
df1 = pd.read_csv('csv1.csv', dtype={'ID': str})
df2 = pd.read_csv('csv2.csv', dtype={'ID': str})

# 定义分组处理函数:为当前ID组的csv1数据匹配对应Cost
def fill_cost(group):
    current_id = group['ID'].iloc[0]
    # 提取csv2中同ID的所有数据
    df2_group = df2[df2['ID'] == current_id]
    # 转为numpy数组提升匹配效率
    sizes = df2_group['item_size'].to_numpy()
    costs = df2_group['Cost'].to_numpy()
    
    # 为每个item_size找到最接近值对应的Cost
    group['Cost'] = group['item_size'].apply(
        lambda x: costs[np.abs(sizes - x).argmin()]
    )
    return group

# 按ID分组处理并合并结果
result_df = df1.groupby('ID', group_keys=False).apply(fill_cost)

# 输出结果,保持原csv1结构
result_df.to_csv('filled_csv1.csv', index=False)

方案优势

  • 无中间文件:全程内存处理,避免生成大量临时CSV,节省存储与计算资源
  • 高效匹配:利用numpy向量化运算加速近似值查找,比列表循环效率更高
  • 结构保留:最终输出与原csv1结构完全一致,无需额外格式调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 13:40:25