@Fee1in

Как сравнить столбцы по 'id' и 'Цена' двух разных DataFrame в Pandas?

Имеются два csv (для наглядности пример без csv) файла разных размеров, но с уникальными номерами в столбцах , я хочу сравнить в pandas два столбца с поиском по id строки и сравнением цены в первом df1 и df2, и если цены не совпадают добавить новую колонку(цену) 'Цена 2' в df1. И соответственно если id из df2 нет df1, добавить полностью строку с этим id из df2 в df1
import pandas as pd
df1=pd.DataFrame(data=[[39000, 'Санкт-Петербург', '5 мая 02:08', 123545],
[38990, 'Санкт-Петербург', '4 мая 15:54', 9999991],
[25000, 'Новосибирск', '4 мая 17:29', 4577441],
[47990, 'Москва', '4 мая 14:04', 1245366]],
columns=['Цена', 'Город', 'Дата', 'id'])
df2=pd.DataFrame(data=[[20000, 'Красноярск', '1 мая 10:01', 953314],
[38990, 'Санкт-Петербург', '4 мая 15:54', 9999991],
[25000, 'Новосибирск', '4 мая 17:29', 4577441],
[10000, 'Санкт-Петербург', '5 мая 02:08', 123545],
[43990, 'Москва', '4 мая 14:04', 1245366],
[52000, 'Омск', '3 мая 14:10', 543642]],
columns=['Цена', 'Город', 'Дата', 'id'])

for i in len(df2['id']):
    if df2['id'].unique()[1] in df1['id'].unique(): #Проверка наличия id
        if ((df1.query(f'id==i'))['Цена']) == ((df2.query(f'id==i'))['Цена']):
#Хочу сравнить цены, но не работает

Может есть команда которая выдаст номер индекса элемента? чтобы можно было обратиться к значению столбца по индексу?
  • Вопрос задан
  • 2105 просмотров
Решения вопроса 1
@zexer
df3 = df1.merge(df2[['id', 'Цена']], how='outer', on='id')
idx = np.where(df3['Цена_x']==df3['Цена_y'],True, False)
df3.loc[idx, 'Цена_y'] = np.nan
df3

Это решит вашу проблему?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы