У меня 4 файла csv. Каждый файл имеет разные поля, например, name, id_number и т.д. c. Каждый файл говорит об одном и том же, для чего есть уникальный идентификатор, который есть у каждого файла. Итак, я хотел бы объединить поля каждого из 4 файлов в один DataFrame. Например, один файл содержит first_name, другой файл - last_name, затем я хочу объединить эти два, чтобы у меня было имя и фамилия для каждого объекта.
Это тривиально, но я бы хотел чтобы узнать наиболее эффективный способ, или если есть какая-то встроенная функция, которая делает это очень эффективно.
Файлы выглядят примерно так:
file1:
id name age pets
b13 Marge 18 cat
y47 Dan 13 dog
h78 Mark 20 lizard
файл2:
id last_name income city
y47 Schmidt 1800 Dallas
b13 Olson 1670 Paris
h78 Diaz 2010 London
файлы 3 и 4 похожи на эти с разными полями. Идентификаторы не обязательно упорядочены. И снова цель состоит в том, чтобы один DataFrame выглядел так:
id name age pets last_name income city
b13 Marge 18 cat Olson 1670 Paris
y47 Dan 13 dog Schmidt 1800 Dallas
h78 Mark 20 lizard Diaz 2010 London
Я сделал следующее:
file1 = pd.read_csv('file1.csv')
file2 = pd.read_csv('file2.csv')
file3 = pd.read_csv('file3.csv')
file4 = pd.read_csv('file4.csv')
f1_group = file1.groupby(['id'])
f2_group = file2.groupby(['id'])
f3_group = file3.groupby(['id'])
f4_group = file4.groupby(['id'])
data = []
for id1, group1 in f1_group:
for id2, group2 in f2_group:
for id3, group3 in f3_group:
for id4, group4 in f4_group:
if id1 == id2 == id3 == id4:
frames = [group1, group2, group3, group4]
con = pd.concat(frames, axis=1)
data.append(con)
Это работает, но крайне неэффективно. Если бы я мог исключить элемент, который уже рассматривался, из group1, group2, et c, это помогло бы, но все равно было бы неэффективно.
Заранее спасибо.