В настоящее время я работаю над назначением разных скоростей притока (значений с плавающей запятой) для каждого продукта на основе кода продукта => Должно быть 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)
Спасибо, такое простое и элегантное решение!