Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 23.04.2018
Сообщений: 44

Замена значений в столбце датафрейма из другого датафрейма

21.12.2022, 23:43. Показов 4506. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Есть фрейм данных в столбце которого нужно навести порядок, привести значения к единому виду. Нужно это сделать следующим образом: Создать новый фрейм в котором 2 столбца, первый это значение которое нужно заменить, второй это значение на которое нужно заменить, фрейм будет браться из экселя и иногда дополняться. Вижу только 1 выход, методом перебора пробежаться по столбцу из первого фрейма сравнить со столбцом из второго, но что то мне подсказывает, что в пандасе можно сделать это проще. Подскажите как.
Миниатюры
Замена значений в столбце датафрейма из другого датафрейма   Замена значений в столбце датафрейма из другого датафрейма  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.12.2022, 23:43
Ответы с готовыми решениями:

Значение по условию в столбце датафрейма
В зависимости от значения столбца 1 необходимо вычислить значение в столбце 4 используя значение в столбце 2 или в столбце 3. Подскажите...

Первый элемент в столбце датафрейма *Pandas
Добрый день. У меня есть датафрейм OnD Pax 8743 SVO-LED 50005 3520 LED-SVO 45816 7321 AER-SVO 31542 ...

Датафрейм с суммой данных из другого датафрейма
Коллеги, добрый день! Возникла небольшая проблемка. Суть задачи: есть два датафрейма, в один из них помещаются уникальные данные из...

5
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
22.12.2022, 01:12
Ничего непонятно.
Цитата Сообщение от sof07 Посмотреть сообщение
Создать новый фрейм в котором 2 столбца, первый это значение которое нужно заменить, второй это значение на которое нужно заменить
Откуда берётся новое значение?
0
0 / 0 / 0
Регистрация: 23.04.2018
Сообщений: 44
22.12.2022, 09:03  [ТС]
Red white socks, Первая миниатюра - столбец из фрейма в котором надо заменить значения. Вторая миниатюра - фрейм из которого нужно взять значения. В столбце "Тариф", второй миниатюры - значения которые сравниваются со значениями из первой миниатюры. Из столбца "Новое значение" Нужно подставить новое значение в первую миниатюру , в случае если значения в столбцах "Тариф" первой и второй миниатюры совпадают.
0
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
22.12.2022, 11:07
Python
1
2
3
4
5
6
7
df1 = pd.DataFrame([['1 тариф', 'ТАРИФ 1'], ['2 тариф', 'ТАРИФ 2'], ['3 тариф','ТАРИФ 3']], 
                   columns =['tarif', 'tarif_new'])
df2 = pd.DataFrame({'tarif':['2 тариф', '1 тариф', '4 тариф']})
print(df2, end ='\n\n')
dct = df1.set_index('tarif').T.to_dict('list')
df2.tarif = df2.apply(lambda x: (dct.get(x.tarif) or [x.tarif])[0], axis=1)
print(df2)
Code
1
2
3
4
5
6
7
8
9
     tarif
0  2 тариф
1  1 тариф
2  4 тариф
 
     tarif
0  ТАРИФ 2
1  ТАРИФ 1
2  4 тариф
Но лучше merge использовать.
Python
1
df2.tarif = df2.merge(df1, how = 'left', left_on='tarif', right_on='tarif').tarif_new.fillna(df2.tarif)
Единственная тонкость - значения в df1.tarif должны быть уникальны. Если же не уникальны, то мёрджить надо df1.groupby
0
150 / 120 / 36
Регистрация: 01.11.2019
Сообщений: 425
22.12.2022, 11:25
Для обновления тарифов

Python
1
2
3
4
5
6
7
8
9
10
import pandas as pd
 
df_1 = pd.DataFrame({'A': ['Тариф 1', 'Тариф 2', 'Тариф 3', 'Тариф 4'], 'B' : [900, 500, 1000, 100]})
df_2 = pd.DataFrame({'A': ['Тариф 1', 'Тариф 2', 'Тариф 3', 'Тариф 4'], 'B' : [90, 50, 100, 10]})
 
 
df = df_1.join(df_2,lsuffix='_1', rsuffix='_2', how='outer')
print(df)
df.loc[(df['B_1']!= df['B_2'])), 'B_1'] = df['B_2']
print(df)
0
0 / 0 / 0
Регистрация: 23.04.2018
Сообщений: 44
22.12.2022, 23:39  [ТС]
Red white socks, volkomorov, короче ничего не понял в коде, сделал следующим образомЖ
Python
1
2
3
4
5
6
7
8
xl = pd.ExcelFile(file_name)
df_replace = xl.parse('Замена значений')
list_1 = list(df_replace['Тариф'])
list_2 = list(df_replace['Новое значение'])
 
df['Тариф'] = df['Тариф'].replace(
    to_replace = list_1, 
    value = list_2)
Вроде работает, спасибо за помощь))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.12.2022, 23:39
Помогаю со студенческими работами здесь

Срез датафрейма
Здравствуйте,есть определенный датафрейм с большим кол-ом столбцов. Мне надо узнать, как влияют на продажи внутри одного лидирующего...

Срез данных датафрейма
Хочу рассчитать коэффициента Альфа Кронбаха для пула данных. def CronbachAlpha(itemscores): itemscores =...

Pandas сортировка датафрейма
Доброго времени суток! Помогите пожалуйста чайнику! Есть у меня, скажем, табличка с фруктами и их количеством. И список фруктов с...

Преобразование признака и датафрейма
Коллеги, здравствуйте! Подскажите пожалуйста по двум вопросам. 1. Имеется категориальный признак, который насчитывает 25...

Pandas индекс датафрейма
Добрый день! Я в питоне и пандах 0. Помогите, пожалуйста, если не сложно! mydf=pd.DataFrame({'data': , }, index=) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru