Как мне объединить таблицы на основе общего столбца? - PullRequest
1 голос
/ 07 апреля 2020

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

import pandas as pd
data_a = pd.read_csv(r'system.csv', encoding = 'cp949')
data_b = pd.read_csv(r'Seoul.csv', encoding = 'cp949')
pd.merge(data_a, data_b, how = 'left', on = 'Ccode')

Вместо получения объединенной таблицы это сообщение об ошибке продолжает появляться:

MemoryError: Unable to allocate 73.7 GiB for an array with shape (162, 61021050) and data type int64

Должен ли я попробовать другой метод или что-то не так с моим кодом?

РЕДАКТИРОВАТЬ: Вот пример данных, с которыми я работаю:

data_a = pd.DataFrame({'Ccode': [11260, 11203, 12121, 13101, 11002], 'Dname': ['Jonggu', 'Jongnogu', 'Seongbukgu', 'Mapogu', 'Dongdaemungu'], Xcoor [205310, 210191, 199768, 200974, 198397], Ycoor[445727, 446339, 452273, 451975, 451624]}, 
                      columns=['Ccode', 'Dname', 'Xcoor', 'Ycoor'])




data_b = pd.DataFrame({'Ccode': [12260, 11133, 11001, 11591, 10000], 'Acode': ['11', '11', '11', '11', '11'], Opostc [135080, 153010, 143200, 157812, 138735], Npostc[6149, 8545, 4992, 7619, 5510]}, 
                          columns=['Ccode', 'Acode', 'Opostc', 'Npostc'])

Есть всего 33 столбца в data_a и 168 столбцов в data_b. Единственный столбец, который разделяют два набора данных, это «Ccode»,

1 Ответ

1 голос
/ 07 апреля 2020

Почему бы и нет:

import pandas as pd
data_a = pd.read_csv(r'system.csv', encoding = 'cp949')
data_b = pd.read_csv(r'Seoul.csv', encoding = 'cp949')
data_a.join(data_b.set_index('Copde'), on = 'Ccode')

Хотя, похоже, у вас все равно есть проблемы с памятью (то есть файл результатов слишком велик для размещения в памяти).

Я предполагаю, что из-за того, что индексы не указаны, merge пытается использовать индекс по умолчанию для чисел c при загрузке фреймов данных, и это может привести к взрыву столбцов, который вы иметь. Или, может быть, столбец Ccode в обоих фреймах данных не соответствует типам данных (проверьте для NA, если они оба должны быть int, потому что он может быть преобразован в float или object).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...