Я использовал метод внутреннего слияния фрейма данных pandas для данных, полученных из MySQL. Я ожидал, что счетчик совпадет с SQL-запросом внутреннего соединения. Работает ли метод слияния точно так же, как SQL-запрос внутреннего соединения?

farmer_ucd=pd.read_sql('select * from usercredential_dtl  ', con=farmer_engine)
farmer_upe=pd.read_sql('select * from userprofile_dtl  ', con=farmer_engine)

farmer_upe.merge(farmer_ucd, how='inner', on=['user_id'])

99979 rows × 51 columns

Количество запросов SQL выше, чем у метода слияния панд.

select count(*) from usercredential_dtl as  ucd inner join userprofile_dtl as upe
on ucd.User_Id = upe.User_Id 

count(*)
109254
0
shantanuo 5 Авг 2017 в 09:48
Отвечает ли это на ваш вопрос? pandas dataframe.merge без учета регистра
 – 
onietosi
21 Фев 2020 в 12:51

1 ответ

Лучший ответ

Это произошло потому, что pandas также сравнивает регистр столбцов, а mysql будет выполнять поиск без учета регистра.

farmer_upe['user_id']=farmer_upe['user_id'].str.lower()

Когда я изменил общий столбец на нижний регистр, он совпал с количеством запросов mysql.

1
shantanuo 5 Авг 2017 в 12:32