首页 > 解决方案 > Python-使用通配符列表搜索另一列为新列生成值

问题描述

目前,我正在根据产品代码为每个产品分配不同的流入率(浮动值)=> 应该有 2 列:PRODUCT_CODE'和'INFLOW_RATE'。产品代码有4个字符,规则如下:

样本数据如下:

图片

有超过 50 个产品代码,所以我认为最好检查条件并使用通配符分配值。到目前为止,我设法想出了这段代码:

Import re    
CFIn_01 = ['SVND','SAVL']
CFIn_10 = ["M.+","L.+","H.+"]
file_consol['INFLOW_RATE'] = 0.5
file_consol.loc[file_consol['PRODUCT_CODE'].isin(CFIn_01), 'INFLOW_RATE'] = 0.1
file_consol.loc[file_consol['PRODUCT_CODE'].isin(CFIn_10), 'INFLOW_RATE'] = 1.0

但是,当我检查结果时,'INFLOW_RATE' 的所有列仍然填充 0.5,而不是我预期的规则。我不确定这个问题的合适代码是什么。任何帮助或建议表示赞赏!

标签: pythonconditional-statementswildcard

解决方案


像使用简单字符串一样创建自定义函数:

def my_func(word: str):
    if word.startswith('H') or word.startswith('L') or word.startswith('M'): 
        out = 0.1
    elif word == 'SVND' or word == 'SAVL':
        out = 1.0
    else:
        out = 0.5
    return out

然后应用函数:

df['INFLOW'] = df.PRODUCT_CODE.apply(my_func)

推荐阅读