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
相关产品推荐
相关产品推荐

