Я объединяю две таблицы left_table
и right_table
для неуникальных ключей, что приводит к взрыву строк.Затем я хочу объединить строки, чтобы соответствовать количеству строк в left_table
.Для этого я агрегирую по столбцам left_table.Странно, когда я сохраняю таблицу, столбцы в left_table
удваиваются.Кажется, что столбцы left_table
становятся индексом для результирующего кадра данных ...
Левая таблица
k1 k2 s v c target
0 1 3 20 40 2 2
1 1 2 10 20 1 1
2 1 2 10 80 2 1
Правая таблица
k11 k22 s2 v2
0 1 2 0 100
1 2 3 30 200
2 1 2 10 300
Левое соединение
k1 k2 s v c target s2 v2
0 1 3 20 40 2 2 NaN NaN
1 1 2 10 20 1 1 0.0 100.0
2 1 2 10 20 1 1 10.0 300.0
3 1 2 10 80 2 1 0.0 100.0
4 1 2 10 80 2 1 10.0 300.0
Код агрегации
dic = {}
keys_to_agg_over = left_table_col_names
for col in numeric_cols:
if col in all_cols:
dic[col] = 'median'
left_join = left_join.groupby(keys_to_agg_over).aggregate(dic)
После агрегации (удвоенное число левых столбцов таблицы)
k1 k2 s v c target s2 v2
k1 k2 s v c target
1 2 10 20 1 1 1 2 10 20 1 1 5.0 200.0
80 2 1 1 2 10 80 2 1 5.0 200.0
3 20 40 2 2 1 3 20 40 2 2 NaN NaN
Сохранено в файл CSV
k1,k2,s,v,c,target,k1,k2,s,v,c,target,s2,v2
1,2,10,20,1,1,1,2,10,20,1,1,5.0,200.0
1,2,10,80,2,1,1,2,10,80,2,1,5.0,200.0
1,3,20,40,2,2,1,3,20,40,2,2,,
Iпопытался сбросить индекс, как left_join.reset_index()
, но я получаю
ValueError: cannot insert target, already exists
Как решить проблему удвоения столбцов?