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

基于pandas累积列实现数据匹配补全车辆字段的方法咨询

Pandas 实现方案

不需要手动遍历表数据,用pandas自带的分组聚合、合并操作即可完成需求,完整可运行代码如下:

import pandas as pd

# 1. 定义车辆类型到缩写的映射规则
vehicle_mapping = {
    'car': 'C',
    'motorcycle': 'M',
    'boat': 'B'
}

# ----------------------
# 样例数据构造(实际使用时替换为你自己读取的df1、df2即可,比如用pd.read_csv读入本地文件)
# 第一张表
df1 = pd.DataFrame([
    ['jeff', 20, 100, 'missing'],
    ['shinji', 24, 120, 'missing'],
    ['rodger', 18, 150, 'missing'],
    ['eric', 25, 160, 'missing'],
    ['romeo', 30, 170, 'missing']
], columns=['names', 'age', 'salary', 'vehicle'])

# 第二张表
df2 = pd.DataFrame([
    ['jeff', 20, 100, 'car', 'video games'],
    ['jeff', 20, 100, 'car', 'cell phone'],
    ['jeff', 20, 100, 'motorcycle', 'soft drink'],
    ['jeff', 20, 100, 'boat', 'pharmaceuticals'],
    ['shinji', 24, 120, 'car', 'robots'],
    ['shinji', 24, 120, 'car', 'animation'],
    ['rodger', 18, 150, 'car', 'cars'],
    ['rodger', 18, 150, 'motorcycle', 'glasses'],
    ['eric', 25, 160, 'boat', 'video games'],
    ['eric', 25, 160, 'car', 'arms'],
    ['romeo', 30, 70, 'boat', 'vaccines']
], columns=['names', 'age', 'salary', 'vehicle', 'industry'])
# ----------------------

# 2. 处理第二张表,按匹配键分组聚合得到车辆缩写拼接结果
df2_agg = df2.groupby(['names', 'age', 'salary'], as_index=False)['vehicle'].agg(
    # 先去重避免重复计算相同车辆、映射为缩写后按C→M→B的固定顺序排序再拼接
    lambda x: ''.join(sorted([vehicle_mapping[v] for v in x.unique()], key=lambda i: ['C','M','B'].index(i)))
).rename(columns={'vehicle': 'vehicle_result'})

# 3. 合并结果到第一张表,替换原有missing值
df1 = df1.merge(df2_agg, on=['names', 'age', 'salary'], how='left')
# 匹配不到的条目保留原有值
df1['vehicle'] = df1['vehicle_result'].fillna(df1['vehicle'])
df1 = df1.drop(columns=['vehicle_result'])

# 输出最终结果
print(df1)

结果说明

运行代码后得到的df1和你要求的效果完全一致,样例中romeo因为两张表的salary数值不一致匹配不上,所以保留missing值,修正数值后即可得到B的结果。

  • 聚合时调用unique()避免同一个用户重复的车辆类型生成重复缩写
  • 固定排序规则保证拼接结果总是按C(car)→M(motorcycle)→B(boat)的顺序排列,不会因为第二张表的条目顺序变化导致结果混乱
  • 左连接逻辑保留第一张表的所有条目,匹配失败不会丢失原有数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 14:15:00