#python #pandas #dataframe #merge
#python #pandas #фрейм данных #слияние
Вопрос:
Я работаю над проектом, и в какой-то момент мне нужно слева соединить два фрейма данных: df и temp. df имеет около 20 столбцов и 47576 строк, в то время как temp имеет 4 столбца и 446829 строк; два фрейма данных должны быть объединены в трех столбцах (совместно используемых ими обоими). Чтобы избежать создания дополнительных строк, я сначала выполняю следующее:
temp = temp.drop_duplicates(subset=['A','B','C'])
Затем я присоединяюсь к двум фреймам данных, выполняющим функцию:
df_1 = pd.merge(df, temp, how='left', left_on=['A','B','C']; right_on=['A','B','C'])
Тогда я бы предположил, что фрейм данных df_1 содержит ровно столько строк, сколько df (поскольку у него не может быть больше, поскольку я уже удалил дубликаты во временном режиме; и у него не должно быть меньше, поскольку это левое соединение).).
Но я вижу, что на самом деле фрейм данных df_1 содержит 30259 строк, что намного меньше, чем 47576 строк, которые были у фрейма данных df.
Как это возможно?
(Кроме того, думая, что это может как-то помочь, я заполнил значения Nan столбцов ‘A’, ‘B’, ‘C’ в фрейме данных df, но, похоже, это не помогает)
Комментарии:
1. Если вы можете предоставить минимальный пример данных, было бы проще ответить на ваш вопрос. Но в любом случае попробуйте удалить «left_on =» и «right_on =» и заменить на «on =»
2. вы можете попробовать также использовать следующий синтаксис, чтобы увидеть, получите ли вы другой результат:
df_1 = df.merge(temp, how='left', on=['A', 'B', 'C'])