Я создал даже «более широкий» пример, передав также ключи параметр («маркер происхождения»).
Исходный файл Input_1.txt :
1 ab1 cd1 as1 sd1 dfg1
1 ab2 cd2 as2 sd2 dfg2
1 ab3 cd3 as3 sd3 dfg3
2 ab4 cd4 as4 sd4 dfg4
Исходный файл Input_2.txt :
1 ab5 cd5 as5 sd5 dfg5
1 ab6 cd6 as6 sd6 dfg6
1 ab7 cd7 as7 sd7 dfg7
2 ab8 cd8 as8 sd8 dfg8
(оба вышеуказанных файла разделены табуляцией).
И код:
toconcat = []
keys = []
path = Path(r'C:\Users\...') # Replace dots with your path
filenames = path.glob('*.txt')
for i in filenames:
data1 = pd.read_csv(i, sep='\t', names=['number', 'ab', 'cd', 'as', 'sd', 'dfg'])
dataset1 = data1.loc[data1.number==1, ['number', 'ab', 'cd']]
toconcat.append(dataset1)
keys.append(i.stem)
result = pd.concat(toconcat, keys=keys)
print(result)
Обратите внимание, что имена столбцов можно передавать уже в read_csv (как и я).
Результат для моих входных файлов:
number ab cd
Input_1 0 1 ab1 cd1
1 1 ab2 cd2
2 1 ab3 cd3
Input_2 0 1 ab5 cd5
1 1 ab6 cd6
2 1 ab7 cd7
Итак, ваш код выглядит нормально. Мой код отличается только в той детали, что результат содержит MultiIndex, причем верхний уровень показывает происхождение каждой строки, что упрощает отслеживание происходящего.
Попробуйте только мой код и мои входные файлы, результат должен быть таким же, как у меня.
Затем замените один из моих файлов вашим (и запустите код). Наконец, замените второй файл my на свой второй и снова запустите код.
Наконец, удалите параметр keys , чтобы в результате появился обычный индекс.
Вероятно источник вашей ошибки находится где-то в другом месте.
Кстати: вам не нужно import glob , поскольку вы используете glob from path только.