Как вы написали без заголовков , я предполагаю, что чтение должно выполняться скорее с header=None
. Использование header=filename
- очень странная концепция.
Я предполагаю, что у вас есть первые 2 входных DataFrames примерно так:
0 1 2
0 A Bbb1 Ccc1
1 B Bbb2 Ccc2
2 C Bbb3 Ccc3
3 D Bbb4 Ccc4
0 1 2
0 A Ddd1 Eee1
1 B Ddd2 Eee2
2 C Ddd3 Eee3
3 D Ddd4 Eee4
с тем же содержимым в первом столбце.
Насколько я понимаю, вы хотите объединить (на самом деле объединить ) их по горизонтали , по общим значениям в первом столбце.
Чтобы объединить первые 2 фрейма данных, скажем, df и df2 , вы можете:
df = pd.merge(df, df2, on=[0], how='outer')
df.columns = [ n for n in range(len(df.columns)) ]
Затем объединенное содержимое возвращается в df , а столбцы переименовываются в последовательные целые числа :
0 1 2 3 4
0 A Bbb1 Ccc1 Ddd1 Eee1
1 B Bbb2 Ccc2 Ddd2 Eee2
2 C Bbb3 Ccc3 Ddd3 Eee3
3 D Bbb4 Ccc4 Ddd4 Eee4
Таким образом, вы не повторяете первый столбец (ключ слияния).
Итак, ваш l oop для чтения и слияния исходных файлов может быть примерно таким:
for counter, current_file in enumerate(glob.glob("*.csv")):
print(f'{counter}: {current_file}')
if counter == 0:
df = pd.read_csv(current_file, header=None)
else:
df2 = pd.read_csv(current_file, header=None)
df = pd.merge(df, df2, on=[0], how='outer')
df.columns = [ n for n in range(len(df.columns)) ]