0

Заменить строку/значение в DataFrame целиком

16

У меня есть очень большой набор данных, в котором я хочу заменить строки на числа. Я бы хотел работать с набором данных, не вводя функцию отображения для каждого ключа (столбца) в наборе. Это похоже на метод fillna, но нужно заменить конкретные строки на соответствующие значения.

Есть ли способ сделать это?

Вот пример моего набора данных:

data
   resp          A          B          C
0     1       poor       poor       good
1     2       good       poor       good
2     3  very good  very good  very good
3     4       bad        poor       bad 
4     5   very bad   very bad   very bad
5     6       poor       good   very bad
6     7       good       good       good
7     8  very good  very good  very good
8     9       bad        bad    very bad
9    10   very bad   very bad   very bad

Желаемый результат:

data
   resp  A  B  C
0      1  3  3  4
1     2  4  3  4
2     3  5  5  5
3     4  2  3  2
4     5  1  1  1
5     6  3  4  1
6     7  4  4  4
7     8  5  5  5
8     9  2  2  1
9    10  1  1  1

Где значения строк соответствуют: very bad=1, bad=2, poor=3, good=4, very good=5.

Заранее спасибо за помощь!

2 ответ(ов)

0

Учитывая, что data — это ваш pandas DataFrame, вы также можете использовать следующий код для замены значений:

data.replace({'very bad': 1, 'bad': 2, 'poor': 3, 'good': 4, 'very good': 5}, inplace=True)

Этот метод позволит заменить текстовые метки на числовые значения непосредственно в вашем DataFrame. Обратите внимание, что с ключевым словом inplace=True изменения будут применены к исходному DataFrame без необходимости создания нового.

0

Если вы хотите заменить строки в вашем DataFrame на числовые значения, то важно сохранять результат в переменной, чтобы изменения были применены. В вашем примере вы используете метод replace, но не сохраняете его результат. Вот правильный способ сделать это:

data = data.replace(['very bad', 'bad', 'poor', 'good', 'very good'], 
                     [1, 2, 3, 4, 5])

После выполнения этой операции, переменная data будет содержать обновлённые значения. Если вы просто вызовете data.replace(...) без присвоения результата, изменение будет видно только в предварительном просмотре, но оригинальная переменная data останется неизменной. Поэтому не забудьте сохранить изменения, присвоив результат обратно в data.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь