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

如何将main_df中指定Product值替换为mapping_df对应Model值

数据替换需求

需要对main_df数据框进行修改:将其Product列中的列表值替换为mapping_df数据框中对应的Model列表值,但仅当该Product值存在于查找列表to_replace_values中时才执行替换。
例如:main_df索引0处的Product值会被替换为mapping_df中所有对应的Model值,前提是该Product值在to_replace_values中能找到。

示例数据

import pandas as pd

# 原始数据框
main_df = pd.DataFrame(data = {
    'Product': {
        0: "['Passenger Cars']",
        1: "['New Cars', 'Mercedes-Maybach']",
        2: "['New Cars', 'Mercedes-Benz C-Class']",
        3: "['New Cars', 'Mercedes-Benz C-Class', 'Mercedes-AMG CLA Coupe']"
    }
})

# 需要替换的Product值列表
to_replace_values = [
    'Passenger Cars',
    'Mercedes-Benz Vans',
    'New Cars',
    'New Vans',
    'Mercedes-Maybach',
    'Mercedes-Benz',
    'Mercedes-AMG',
    'EQ Technology'
]

# 映射数据框
mapping_df = pd.DataFrame({
    'Product': {
        0: 'New Cars',
        1: 'New Cars',
        2: 'Passenger Cars',
        3: 'Passenger Cars',
        4: 'Mercedes-Maybach',
        5: 'Mercedes-Maybach'
    },
    'Model': {
        0: 'Mercedes-Benz GLA',
        1: 'Mercedes-Benz GLB',
        2: 'Mercedes-Benz GLE',
        3: 'Mercedes-Benz GLS',
        4: 'Mercedes-Maybach GLS',
        5: 'Mercedes-Maybach S-Class'
}})

# 预期输出
expected_outputs = pd.DataFrame(
    data = {
    'Product': {
        0: "['Mercedes-Benz GLE', 'Mercedes-Benz GLS']",
        1: "['Mercedes-Benz GLA', 'Mercedes-Benz GLB', 'Mercedes-Maybach GLS', 'Mercedes-Maybach S-Class']",
        2: "['Mercedes-Benz GLA', 'Mercedes-Benz GLB', 'Mercedes-Benz C-Class']",
        3: "['Mercedes-Benz GLA', 'Mercedes-Benz GLB', 'Mercedes-Benz C-Class', 'Mercedes-AMG CLA Coupe']"
    }
})

解决方案代码

import ast

# 1. 把main_df中字符串格式的列表转换为实际列表对象
main_df['Product'] = main_df['Product'].apply(ast.literal_eval)

# 2. 构建Product到对应Model列表的映射字典
product_to_models = mapping_df.groupby('Product')['Model'].agg(list).to_dict()

# 3. 定义替换逻辑函数
def process_product_list(product_list):
    processed = []
    for item in product_list:
        # 仅当item在替换列表中且存在映射时,替换为对应的Model列表
        if item in to_replace_values and item in product_to_models:
            processed.extend(product_to_models[item])
        else:
            processed.append(item)
    return processed

# 4. 应用替换并转换回字符串格式(匹配预期输出的格式)
main_df['Product'] = main_df['Product'].apply(process_product_list).apply(str)

# 验证结果是否符合预期
print(main_df.equals(expected_outputs))  # 输出True表示匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 18:44:07