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

pandas将子数据框列合并至父数据框并填充空值的无循环实现

实现方法

完全不需要写逐行循环,用pandas内置方法即可实现,步骤如下:

前置准备

首先构造样品编号到对应产品列表的映射,同时准备好你的原始数据:

import pandas as pd
import numpy as np

# 你的原始促销活动表
df = pd.DataFrame({
    "Promotion ID": ["PID-1", "PID-2"],
    "Month": ["June", "July"],
    "Products": ["Refer below for sample1", "Refer below for sample2"]
})

# 样品对应产品列表映射,你可以根据实际数据调整
sample_product_map = {
    "sample1": ["PROD1", "PROD2"],
    "sample2": ["PROD1", "PROD2", "PROD3"]
}

核心处理步骤

# 1. 提取Products字段中的样品编号,映射为对应的产品列表
df["Products"] = df["Products"].str.extract(r"(sample\d+)").map(sample_product_map)

# 2. 将产品列表拆分为单独的行,一行对应一个产品ID
df = df.explode("Products", ignore_index=True)

# 3. 把重复的Promotion ID、Month字段设为NA,仅保留第一行的值
df.loc[df["Promotion ID"].duplicated(), ["Promotion ID", "Month"]] = np.nan

结果验证

处理后的df就和你需要的目标格式完全一致,空缺位置默认填充为NaN,如果你需要用None,把上面的np.nan替换为None即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:54:03