ZeroDivisionError: деление с плавающей запятой на ноль в кадре данных pandas - PullRequest
0 голосов
/ 09 мая 2020
• 1000 У меня в знаменателе 0, он возвращает Nan, моя функция выглядит так:
def get_roic(BS, KPI, IC):
     table = KPI.loc['fcf'].to_frame('fcf')
     table['Invested Capital'] = (BS.loc['st_debt'] + BS.loc['other_current_liabilities'] + 
     BS.loc['lt_debt'] + BS.loc['other_lt_liabilities'] + BS.loc['total_equity'])
     table['roic'] = table['fcf'].divide(table['Invested Capital'])
     table['revenue'] = IC.loc['revenue']
     table['fcf/revenue'] = table['fcf'].divide(table['revenue'])    
     return table

Я пробовал много вещей, например:

def get_roic(BS, KPI, IC):
    table = KPI.loc['fcf'].to_frame('fcf')
    table['Invested Capital'] = (BS.loc['st_debt'] + BS.loc['other_current_liabilities'] + BS.loc['lt_debt'] + BS.loc['other_lt_liabilities'] + BS.loc['total_equity'])
    table['roic'] = table['fcf'].divide(table['Invested Capital'].where(table['Invested Capital'] != 0.0, np.nan))
    table['revenue'] = IC.loc['revenue']
    table['fcf/revenue'] = table['fcf'].divide(table['revenue'].where(table['revenue'] != 0.0, np.nan))     
    return table

Но мне не удалось заставить его работать. . есть идеи?

1 Ответ

0 голосов
/ 09 мая 2020

Вы пробовали это:

df['fcf/revenue'] = df['fcf'].divide(df['revenue']) 
df['fcf/revenue'] = df['fcf/revenue'].replace(np.inf, np.nan)

   a   fcf  revenue  fcf/revenue
0  1  23.0     45.0     0.511111
1  2  34.0     56.0     0.607143
2  3  23.0      0.0          NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...