Преобразование строки a / b в плавающие в пандах - PullRequest
2 голосов
/ 08 марта 2019

У меня есть такой фрейм данных:

        score  year
         5/5   2019
         1/2   2018
          A    2019

Я хочу преобразовать счет из строки в число с плавающей точкой, например, 5/5 = 1, 1/2 = 0,5, я попытался to_numeric, но так как мои значения в форме a / b, я ничего не возвращаю. Пожалуйста, помогите мне с этим.

1 Ответ

4 голосов
/ 08 марта 2019

Вы можете использовать pandas.eval с try-except оператором:

def func(x):
    try:
        return pd.eval(x)
    except Exception:
        #for return original
        return x
        #for return None
        #return None

df['new'] = df['score'].apply(func)
print (df)
  score  year  new
0   5/5  2019    1
1   1/2  2018  0.5
2     A  2019    A

Если есть только более быстрое решение от @Goyo, спасибо:

import operator

def func(x):
    try:
        return operator.truediv(*map(int, x.split('/')))
    except Exception:
        #for return original
        return x
        #for return None
        #return None
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...