У меня есть функция, которая объединяет 2 кадра данных, но повторяет второй кадр данных для каждого уникального значения в первом кадре данных.
Например:
def one_to_many_merge(left, right):
return (left.assign(key=1).merge(right.assign(key=1), on='key').drop('key', 1))
Это достигается назначениемзначение ключа для первого кадра данных и объединяет этот ключ с тем же назначенным ключом для второго кадра данных, а затем отбрасывает этот ключ и повторяет.
Небольшой пример выходных данных для (3,1) и (2,1) фрейм данных:
df1 = pd.DataFrame({'X' : [1, 2, 3]})
df2 = pd.DataFrame({'Y' : [10, 20]})
df3 = one_to_many_merge(df1, df2)
df3
X Y
1 10
1 20
2 10
2 20
3 10
3 20
Проблема в том, что я сталкиваюсь с MemoryError
для больших наборов - он ломается при объединении фрейма (43262,1)
с фреймом (43039,1)
.
Есть ли лучший способ сделать это параллельным процессом или чем-то более простым для обработки памятью, когда эти кадры данных становятся огромными? Я буду использовать еще большие наборы в будущем.