Замена значений столбцов в фрейме данных pandas с помощью «replace»

#python #pandas #dataframe #replace

#python #pandas #фрейм данных #заменить

Вопрос:

У меня есть набор данных, в котором номера деталей разбиты на подинвентории.

Я хочу заменить некоторые значения, например, «COIL 8» просто на «COIL», чтобы я мог группировать похожие части вместе. Данные представляют собой объект в фрейме данных. Я удалил начальные и конечные пробелы. Я также скопировал значение из фрейма данных в код, чтобы убедиться, что количество пробелов между COIL и 8 одинаковое. Изменение подинвентория на «COIL_8» не является вариантом…вот как я получаю данные. Мне нужно только изменить значения в столбце «Subinventory», но нет проблем с применением кода ко всему фрейму данных.

Я просмотрел документацию и попробовал несколько вариантов, но не получил что-то правильное, поскольку ни одно из значений не заменяется.

 elemental_inv_df.replace({'Subinventory': 'COIL 8'}, {'Subinventory': 'COIL'}, regex=True, inplace = True)
elemental_inv_df = elemental_inv_df.replace("FAB 1", "FAB")
elemental_inv_df = elemental_inv_df.replace(regex={'COIL 33': 'COIL'})
elemental_inv_df = elemental_inv_df.replace(['DECOIL 1'], 'DECOIL')
 

elemental_inv_df

введите описание изображения здесь

Ответ №1:

По сути, вы заменяете, но не сохраняете изменения.

Попробуйте :

 elemental_inv_df.replace({'Subinventory': 'COIL 8'}, {'Subinventory': 'COIL'}, regex=True, inplace = True)
 

или

    elemental_inv_df = elemental_inv_df.replace({'Subinventory': 'COIL 8'}, {'Subinventory': 'COIL'}, regex=True)
 

Редактировать :

Вам необходимо проверить фактическое значение, которое вы пытаетесь заменить, проверив

 elemental_inv_df.Subinventory
 

вывод

 0               FAB
1     COIL        8
2            DECOIL
3     COIL       33
4            DECOIL
5     FAB         1
6               FAB
7     COIL       12
8     DECOIL      1
9               FAB
10           DECOIL
11    COIL       27
12           DECOIL
13              FAB
14    COIL        7
15           DECOIL
16              FAB
17              FAB
18        RUAN-RCVD
19              FAB
20              FAB
21              FAB
22              FAB
23              FAB
24              FAB
25              FAB
26              FAB
27              FAB
28              FAB
 

Так что это не так

 "COIL 8" but "COIL        8" you need to replace.
 

Комментарии:

1. Хммм, ну, я изменил код, но получил тот же результат… Я ценю вашу помощь… отредактированное исходное изображение, чтобы отразить изменения…

2. Можете ли вы выполнить elemental_inv_df .head().to_clipboard(), а затем вставить его в свой пост, чтобы мы могли протестировать его самостоятельно?

3. Я загрузил записную книжку Jupyter и файлы данных в github.com/danawoodruff/Inventory.git . Спасибо, что помогли мне… Я не совсем понимаю это.

4. Я использую Google Colab. Файл Excel открывается в записной книжке Jupyter или в виде файла Excel на рабочем столе … не уверен, почему вы получите сообщения о повреждении. Я перезагрузил его на Github, прошу прощения.

5. Я нашел вашу проблему, в основном вы думаете, что это «КАТУШКА 8», но на самом деле это «КАТУШКА 8″, хм, мы этого здесь не видим, но это намного больше » «, чем один.