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

Python如何将pandas筛选后列数据保留行号复制到新空白列

基础解决方案(单条件赋值)

你不需要单独把筛选结果切分为新的DataFrame,直接用pandas的条件赋值即可保留原行号写入新列:

import pandas as pd

color_colors = ['Blanco negro rojo','Gris multicolor','Negro','Negro/Gris']
# 符合颜色列表的行,将原Color列值写入New_Color列,不符合的行留空
data.loc[data['Color'].isin(color_colors), 'New_Color'] = data['Color']

批量规整多列方案

针对你需要扫描3个原始列、分别匹配三类参考值写入3个新列的需求,可以把逻辑封装成通用规则,避免重复写代码:

# 第一步:定义匹配规则,替换下方的参考值列表为你自己的实际值
match_rules = {
    # 格式:新列名: (匹配参考值列表, 需要扫描的原始列列表)
    "New_Color": (
        ["Blanco negro rojo", "Gris multicolor", "Negro", "Negro/Gris"],
        ["Color", "Size", "Type"]
    ),
    "New_Size": (
        ["S", "M", "L", "XL", "2XL"], # 替换为你的尺寸参考列表
        ["Color", "Size", "Type"]
    ),
    "New_Type": (
        ["Camiseta", "Pantalón", "Zapatos"], # 替换为你的类型参考列表
        ["Color", "Size", "Type"]
    )
}

# 第二步:初始化三个新列为空值
for new_col in match_rules:
    data[new_col] = pd.NA

# 第三步:逐列扫描匹配,自动写入对应新列
for new_col, (ref_list, raw_cols) in match_rules.items():
    for raw_col in raw_cols:
        # 仅新列当前为空时才写入,避免覆盖已匹配到的值
        data.loc[
            data[new_col].isna() & data[raw_col].isin(ref_list),
            new_col
        ] = data[raw_col]

执行后所有新列的行号和原DataFrame完全一致,已匹配到的取值会自动填充,未匹配的行留空。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:06:06