Левое внешнее соединение фрейма данных с объектом серии по ключу в фрейме данных, индекс в ряду

#python #python-3.x #pandas #dataframe

#python #python-3.x #pandas #фрейм данных

Вопрос:

Возможно ли объединить объект серии с фреймом данных без необходимости превращать ряд в фрейм данных?

В настоящее время я что-то вычисляю, получаю серию в результате и должен превратить серию в фрейм данных, чтобы объединить два:

 clicked_series = p.clicked.sum();
temp_df = pd.DataFrame({'ad_id':clicked_series.index, 'clicks':clicked_series.values})
full_df = pd.merge(full_df, temp_df, on='ad_id', how='left')
  

Возможно ли выполнить левое внешнее соединение для ряда и фрейма данных напрямую, без необходимости создавать временный фрейм данных?

Ответ №1:

используйте reindex

 full_df['clicks'] = clicked_series.reindex(full_df.ad_id).values
  

старые ответы

Используйте join
технически, я все еще конвертирую в pd.DataFrame но…

 clicked_series = p.clicked.sum();
full_df = full_df.join(clicked_series.to_frame('clicks'), on='ad_id', how='left')
  

Другим вариантом является использование pd.concat . Но это будет выглядеть как внешнее соединение.

 pd.concat([full_df.set_index('ad_id'),
           clicked_series.rename('clicks')], axis=1).reset_index()
  

Комментарии:

1. Это все, что я также нашел. Первый все еще преобразует ряд в фрейм данных, а второй не допускает левое внешнее соединение.

2. Ты волшебник. Спасибо.