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

使用循环填充DataFrame NaN值:从另一列拆分片段提取匹配值

实现方案

第一步:导入依赖

import pandas as pd
import numpy as np

第二步:定义目标值与填充逻辑

# 定义需要匹配的目标值列表
target_values = ['123', '456', '789']

# 自定义填充函数
def get_col2_value(col1_str):
    # 按下划线拆分Col1字符串
    split_parts = col1_str.split('_')
    # 遍历所有拆分片段
    for part in split_parts:
        # 检查片段是否包含任意目标值
        for target in target_values:
            if target in part:
                return part
    # 无匹配片段返回指定值
    return 'Not Found'

第三步:应用逻辑填充Col2空值

# 构造示例DataFrame(可替换为自己的数据源)
df = pd.DataFrame({
    'Col1': ['AAA_BBB_PORT123_DD', 'AAA_123_BBB_DD', 'STD123_AAA_BBB_DD', '123_AAA_BB_DDD', '456_AAA_BBB_DD', 'AAA_BBB_456_DD', 'AAA_MAN789_BBB_DD', 'AAA_BBB_789_DD', 'AAA_000_BBB_DD'],
    'Col2': ['PORT123', '123', 'STD123', np.nan, '456', '456', np.nan, '789', np.nan]
})

# 仅填充Col2的空值,原有非空值保留
df['Col2'] = df['Col2'].fillna(df['Col1'].apply(get_col2_value))

输出结果验证

运行上述代码后得到的df和预期输出完全一致:

Col1Col2
0AAA_BBB_PORT123_DDPORT123
1AAA_123_BBB_DD123
2STD123_AAA_BBB_DDSTD123
3123_AAA_BB_DDD123
4456_AAA_BBB_DD456
5AAA_BBB_456_DD456
6AAA_MAN789_BBB_DDMAN789
7AAA_BBB_789_DD789
8AAA_000_BBB_DDNot Found

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 16:24:03