目前,我正在根据产品代码为每个产品分配不同的流入量(浮点值)=>应该有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,而不是我期望的规则。我不确定该问题的适当代码是什么。任何帮助或建议,不胜感激!
创建自定义函数,就像使用简单的字符串一样:
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)
谢谢您,这样简单而优雅的解决方案!