У меня есть два больших набора данных, которые я не могу объединить, объединив два кадра данных. Сначала я должен выполнить агрегирование на df_train
, а затем сопоставить значения с df_test
.
df_train
и df_test
с такими же точными id1
и id2
, но df_test
есть больше образцов. Я вычисляю целевое среднее на id1
и id2
и сохраняю его как словарь для проблем с памятью.
target_mean = df_train.groupby(['id1', 'id2'])['target'].mean().to_dict()
Это вывод агрегации. Ключи - это пары кортежей с id1
в качестве первого элемента и id2
в качестве второго элемента, а значения являются целевыми средствами групп.
{(0, 0): 146.45497131347656,
(1, 0): 74.86539459228516,
(2, 0): 14.551384925842285,
(3, 0): 235.5499725341797,
(4, 0): 976.5567626953125,
(5, 0): 17.894445419311523,
(6, 0): 64.06660461425781,
(7, 0): 350.33416748046875,
(7, 1): 3097.043701171875,
(8, 0): 256.92779541015625,
(9, 0): 72.7147445678711 }
Как сопоставить эти значения с id1
и id2
столбцы правильно?
(Есть 60 миллионов строк данных, 1449 id1
и 4 id2
значения, поэтому скорость важна)
РЕДАКТИРОВАТЬ :
df_train[['id1', 'id2']].map(target_mean)
Я пробовал это, но map
поддерживается только pd.Series
.