Python在另一列上使用通配符列表搜索为新列生成值

2024-10-01 05:02:09 发布

您现在位置:Python中文网/ 问答频道 /正文

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

  • 如果代码以“L”、“H”或“M”开头:将浮点值=1.0分配给“流入率”列
  • 如果代码为“SVND”或“SAVL”:将浮点值=0.1分配给“流入率”列
  • 其他情况:将浮动值=0.5分配给“流入率”列

样本数据如下所示:

Pic

有>;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

然而,当我检查结果时,“流入率”的所有列仍然用0.5填充,而不是我预期的规则。我不确定这个问题的合适代码是什么。任何帮助或建议都将不胜感激


Tags: 代码gtrate产品规则codeproductloc
1条回答
网友
1楼 · 发布于 2024-10-01 05:02:09

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

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)

相关问题 更多 >