Как объединить два больших кадра данных Pandas на основе их идентификатора, читая самый большой файл через куски? - PullRequest
0 голосов
/ 15 октября 2019

У меня есть два CSV-файла, df1_50GB.csv и df2_1GB.csv. Я хотел бы объединить кадры данных на основе сопоставленного значения идентификатора. вот что я сделал до сих пор

f50GB =  "df1_50GB.csv"
f1GGB =  "df1_1GGB.csv"
result_file =  "output.csv"

tmp50GB = pd.read_csv(f50GB, nrows=3)
tmp1GB = pd.read_csv(f1GGB, nrows=3)

# creating an empty bucket to save result
df_result = pd.DataFrame(columns=(tmp50GB.columns.append(tmp1GB.columns)).unique())
df_result.to_csv(result_file, index_label=False)
tmp1GB = pd.read_csv(f1GGB)
# Save (append) data which the ID of f1GB  mached with f50GB i.e (x)  #
def save_merged_csv(x):
    df = pd.merge(x, tmp1GB, on='ID', how='left')
    df.to_csv(result_file, mode="a", header=False, index=False)


# create the iterator
csv_reader = pd.read_csv(
    f50GB,
    iterator=True,
    chunksize=100000)

[save_merged_csv(r) for r in csv_reader]

Но я продолжаю получать ошибки 'Ошибка типа: может объединять только объекты Series или DataFrame, a передано' [ОБНОВЛЕНИЕ] Ошибка теперь исправлена. Спасибо @Майкл Гарднер. Но я не уверен, что логика верна. Размер файла результата слишком велик. Это также очень медленно. Итак, я оставлю это здесь, если есть место для улучшения.

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