Добавить столбец из нескольких файлов в цикле

У меня есть несколько папок из которых я считываю циклом файлы, создаю в них столбец name и count Столбец name в каждом файле состоит из части значений из столбца name в ещё одном файле считанным в df. Во всех файлах значения name различны. Мне нужно по этим значениям добавить столбец count из каждого файла в df.

Для примера у меня есть две такие таблицы:

id name count
a 48/a 2
c 48/c 5
id name count
a 50/a 5
b 50/b 6
d 50/d 6

Нужно получить такую таблицу добавлением из двух предыдущих значения count в изначальную таблицу df

name count
48/a 2
48/b
48/c 5
50/a 5
50/b 6
50/c
50/d 6

Код

for i in range(len(file)) :
    obj = pd.read_csv(file[i])
    obj['count'] = obj.groupby('id')['id'].transform('count')
    for j in range(obj.shape[0]):
        obj['name'][j] = str(file[i])+'/'+str(obj['id'][j])
    obj.to_csv('frame'+str(i)+'.csv')
    df = df.merge(obj[['name','count']], on = 'link', how = 'outer' )

Но мой код мне выдает подобную таблицу:

name count_x count_y
48/a 2
48/b
48/c 5
50/a 5
50/b 6
50/c
50/d 6

Как можно переписать, чтоб все добавлялось в один столбец?


Ответы (1 шт):

Автор решения: strawdog

а что мешает установить новый индекс и сделать простую конкатенацию?

df1 = df1.set_index("name")
df2 = df2.set_index("name")
res = pd.concat([df1, df2])

res:

     id  count
name          
48/a  a      2
48/c  c      5
50/a  a      5
50/b  b      6
50/d  d      6

Ненужные колонки можно убрать, и, если есть желание, сделать reset_index()

UPDATE

Если количество колонок может разнится, но нужные вам колонки везде имеют одно и то же имя и значения в колонке name уникальны, то можно попробовать так:

res1 = pd.merge(res1[['name', 'count']], df2[['name', 'count']], how="outer")

res1:

   name  count
0  48/a      2
1  48/c      5
2  50/a      5
3  50/b      6
4  50/d      6
→ Ссылка