Я использую Python для некоторого анализа данных. У меня две таблицы, первая (пусть называется "A" ) имеет 10 миллионов строк и 10 столбцов, а вторая ( "B" ) имеет 73 миллиона строк и 2 столбца. Они имеют 1 столбец с общими идентификаторами, и я хочу пересечь две таблицы на основе этого столбца. В частности, я хочу внутреннее соединение таблиц.
Я не мог загрузить таблицу B в память в качестве фрейма pandas, чтобы использовать обычную функцию слияния на pandas. Я попытался прочитать файл таблицы B на кусках, пересекая каждый фрагмент с A и конкатенацию этих пересечений (вывод из внутренних объединений). Это нормально на скорости, но время от времени это вызывает у меня проблемы и вырывает ошибку сегментации... не так здорово. Эта ошибка трудно воспроизвести, но это происходит на двух разных машинах (Mac OS X nbsp; v10.6 (Snow Leopard) и UNIX, Red Hat Linux).
Наконец, я попытался использовать комбинацию pandas и PyTables, записав таблицу B на диск и затем выполнив итерацию по таблице A и выбрав из таблицы B соответствующие строки. Эти последние варианты работают, но они медленны. Таблица B на pytables была проиндексирована уже по умолчанию.
Как решить эту проблему?