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

Я хотел бы объединить, объединить или добавить / объединить два CSV-файла с одинаковым идентификатором индекса, но разными расширениями с одинаковым идентификатором. Данные сгруппированы также по идентификатору. 1-й файл выглядит следующим образом:

ID,year,age
810006862,2000,49
810006862,2001,
810006862,2002,
810006862,2003,52
810023112,2003,27
810023112,2004,28
810023112,2005,29
810023112,2006,30
810033622,2000,24
810033622,2001,25

, а 2-й файл выглядит следующим образом:

    ID,year,from1,to1
810006862,2002,15341,15705
810006862,2003,15706,16070
810006862,2004,16071,16436
810006862,2005,,
810023112,2000,14610,14975
810023112,2001,14976,15340
810023112,2003,15825,16523
810033622,2000,13211,14876
810033622,2001,14761,14987

Я установил индекс идентификатора для обоих файлов после чтения его в dataframe, а затемобъединить их вместе, но он получает сообщение об ошибке «ValueError: форма переданных значений (25, 2914), индексы подразумевают (25, 251)»

Я пробовал следующие коды:

sp = pd.read_csv('sp1.csv')
sp = sp.set_index('ID')
op = pd.read_csv('op1.csv')
op = op.set_index('ID')
ff = pd.concat([sp, op], join = 'outer', sort = False, axis = 1)

Я также пытался объединить два файла вместе, не устанавливая индекс, и результат, казалось, имел правильные строки, но горизонтальные значения были неверно связаны. Я также попробовал слияние, но в каждой группе было много ненужных дублированных строк. Поскольку у каждой группы разные год и возраст, мне было довольно сложно удалить эти вновь созданные строки с помощью этого метода.

full = pd.merge(sp, op, on = 'ID', how = 'outer', sort = False)

Может быть, кто-то может предложить способы простого удаления этих дубликатов, и это также будет работать для меня, потому что объединенный файл стал таким огромным! Заранее спасибо!

Ожидаемые результаты будут включать все различные значения из обоих файлов CSV. Это примерно так:

    ID,year,age,from1,to1
810006862,2000,49,,
810006862,2001,,,
810006862,2002,,15341,15705
810006862,2003,52,15706,16070
810006862,2004,,16071,16436
810006862,2005,,,
810023112,2000,,14610,14975
810023112,2001,,14976,15340
810023112,2003,27,15825,16523
810023112,2004,28,,
810023112,2005,29,,
810023112,2006,30,,
810033622,2000,24,13211,14876
810033622,2001,25,14761,14987

Я довольно долго искал в Интернете похожие посты, но не смог решить мою проблему. Кто-нибудь может подсказать, как это сделать? Большое спасибо!

...