Выводы по финансовому анализу в датафрейме pandas при срабатывании определенных событий или значений

у меня есть датафрейм с различными показателями. Необходимо сформировать новую колонку с комментариям, если какое-либо значение выходит за определенные рамки. df_ratio:

Name    OGRN  Sales Equity Debt Net_profit   ER    Sales_dyn fin_gearing
Lutik   1234   200    5     10     3        0.001    -0.1       0.5
Pestik  2345   1000   35    20     -10       0.5      0.3       3
Cvet    3456   260    10     0      2        -5       -0.3      -0.4
Drev    4567   350    40     5      10        0.3     0.2       0.3

Пытался создать функцию, которая проходит по датафрейму и при обнаружении критических показателей пишет соответствующие комментарии в новую колонку:

Критические значения:

df_ratio['ER'] < 0.05 - ER is poor       
df_ratio['ER'] < 0 -    Negative equity
df_ratio['Net_profit'] < 0 - Lossess
df_ratio['fin_gearing'] > 1 - High debt level
df_ratio['Sales_dyn'] < 0 Sales dropped

Если не одно из вышеперечисленных условий не срабатывает то Комментарии Sound Financial position

Сперва пытался загнать все функцию и через цикл пройтись по всем колонкам и если что-то срабатывает, то делать append в пустой лист через форматирование строки f"". Но все не так :((( Запутался!!!

Каким необходимо видеть итоговый df df_ratio:

Name    OGRN  Sales Equity Debt Net_profit   ER    Sales_dyn fin_gearing    Comments
Lutik   1234   200    5     10     3        0.001    -0.1       0.5         ER is poor 0.001(Equity=5),
                                                                            Sales droped -0.1(Sales=200)
Pestik  2345   1000   35    20     -10       0.5      0.3       3           Losses -10, High debt 
                                                                            level 3 (Debt=20)
Cvet    3456   260    10     0      2        -5       -0.3      -0.4        Negative equity -5
                                                                           Sales droped -0.3 (Sales=260)      
Drev    4567   350    40     5      10        0.3     0.2       0.3         Sound financial position

Буду признателен за помощь


Ответы (1 шт):

Автор решения: Pavel

У меня как-то так получилось:

def neg_comments(df):
    comment = []
    if df['ER'] < 0.05 and df['ER'] > 0:
       comment.append(f"ER is poor: {df['ER']"}
    elif df['ER'] < 0:
       comment.append(f"Negative equity: {df['ER']"}
    if df['Net_profit'] <0:
       comment.append(f"Losses {df['Net_profit']"}   
    if df['fin_gearing'] > 1:
       comment.append(f"High debt level {df['fin_gearing']"}
   if df['Sales_dyn'] < 0:
       comment.append(f"Sales dropped by {df['Sales_dyn']"}
   df['Comments'] = ', '.join(comment)
   return df

df_ratio = df_ration.apply(neg_comments, axis=1)
→ Ссылка