Python- 在另一列上使用通配符列表搜索为新列生成值
Python- Generate values for a new column using wildcard list search on another column
目前我正在根据产品代码为每个产品分配不同的流入率(浮点值)=> 应该有 2 列:PRODUCT_CODE' 和 'INFLOW_RATE'。产品代码为4个字符,规则如下:
- 如果代码以 'L'、'H' 或 'M' 开头:将浮点值 = 1.0 分配给 'INFLOW_RATE' 列。
- 如果代码是 'SVND' 或 'SAVL':将浮点值 = 0.1 分配给 'INFLOW_RATE' 列。
- 其他情况:将 float 值 = 0.5 分配给 'INFLOW_RATE' 列。
样本数据如下:
产品代码超过 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,而不是我预期的规则。我不确定这个问题的合适代码是什么。感谢任何帮助或建议!
像使用简单字符串一样创建自定义函数:
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)
目前我正在根据产品代码为每个产品分配不同的流入率(浮点值)=> 应该有 2 列:PRODUCT_CODE' 和 'INFLOW_RATE'。产品代码为4个字符,规则如下:
- 如果代码以 'L'、'H' 或 'M' 开头:将浮点值 = 1.0 分配给 'INFLOW_RATE' 列。
- 如果代码是 'SVND' 或 'SAVL':将浮点值 = 0.1 分配给 'INFLOW_RATE' 列。
- 其他情况:将 float 值 = 0.5 分配给 'INFLOW_RATE' 列。
样本数据如下:
产品代码超过 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,而不是我预期的规则。我不确定这个问题的合适代码是什么。感谢任何帮助或建议!
像使用简单字符串一样创建自定义函数:
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)