Удалить определенную строку из всего столбца в панде

У меня есть пандас датафрейм df с содержанием ниже:

  Date          Factor       Expiry         Grade  
0 12/31/1991    2.138766     3/30/1992      -3.33% 
1 10/29/1992    2.031381     2/8/1993       -1.06% 
2 5/20/1993     2.075670     6/4/1993       -6.38% 

Я хотел бы удалить % символ из всех строк в Grade колонка. Результат должен выглядеть так:

  Date          Factor     Expiry        Grade  
0 12/31/1991    2.138766   3/30/1992     -3.33 
1 10/29/1992    2.031381   2/8/1993      -1.06 
2 5/20/1993     2.075670   6/4/1993      -6.38 

Я использую Python v3.6.

4 ответа

Решение

Вы можете использовать нарезку строк, а затем преобразовать в числовой тип через pd.to_numeric:

df['Grade'] = pd.to_numeric(df['Grade'].astype(str).str[:-1], errors='coerce')

Преобразование в float рекомендуется, так как ряд строк будет проходить в общем и неэффективно object dtype, в то время как числовые типы допускают векторизованные операции.

С помощью str.replace должно сработать:

df['Grade'] = df['Grade'].str.replace('%', '')

Почему бы и нет str.rstrip():

df['Grade'] = df['Grade'].str.rstrip('%')

Пока мы даем альтернативы, можем также translate

df.Grade.str.translate(str.maketrans({'%':''})).astype(float) 
Другие вопросы по тегам