При левом присоединении к фрейму данных pandas почему в результате меньше столбцов, чем в левом фрейме данных

#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'])