Склеивание txt-файлов по данному столбцу

У меня есть несколько txt-файлов (~10шт.) одинаковой структуры: два столбца, первый из которых одинаковый для всех файлов. Подскажите, пожалуйста, как к данному txt-файлу присоединить вторые столбики из остальных файлов?

Например, в первом txt-файле у меня находятся такие данные:

506.000000 0.105
507.000000 0.204
508.000000 0.307
509.000000 0.408

во втором:

506.000000 0.005
507.000000 0.003
508.000000 0.004
509.000000 0.007

На выходе я хочу получить такой txt-файл:

506.000000 0.105 0.005
507.000000 0.204 0.003
508.000000 0.307 0.004
509.000000 0.408 0.007

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

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

Я думаю, этот код сможет помочь вам. Он основан на базовом алгоритме "Кратность. Построение списка без повторений". У нас есть ключ (в данном случае значение в левом столбце) и значение (берётся из правого). Таким образом, мы можем создать структуру, в которой в качестве уникального ключа будет выступать значение из левого столбца, а в качестве списка значений (характеристик) будут выступать значения из правого.

Вместо "first.txt", "second.txt" и "third.txt" разместите пути до Ваших файлов.

dictionary = dict() # словарь без повторений

for file in ("first.txt", "second.txt"):    # для каждого файла
    with open(file, "r") as f:              # открываем его в режиме чтения
        for row in f:                       # перебираем строки
            key, value = row.split(" ")     # ключ/значение в файлах разделены пробелом
            value = value.replace("\n", "") # удалям символ перехода на новую строку

            if key in dictionary:             # если такой ключ уже существует в словаре
                dictionary[key].append(value) # то добавляем характеристику в список
            else:                             # если мы встретили этот ключ впервые
                dictionary[key] = [value]     # создаём список характеристик с первой характеристикой

with open("third.txt", "w") as f:
    for key in dictionary: # для каждого ключа получаем строку характеристик
        string = ""
    
        for value in dictionary[key]:
            string += value + " "

        # записываем в третий файл в формате "ключ *[список характеристик]\n"
        f.write(key + " " + string + "\n") 
→ Ссылка
Автор решения: SergFSM

можно попробовать примерно так (решение рабочее):

df = pd.concat([pd.read_csv(i, sep=' ', header=None, index_col=0) for i in files], axis=1)
#--------------------------------------------------------------------------^^^^^ пути к файлам
df.to_csv(filepath, sep=' ', header=False)
#---------^^^^^^^^ итоговый файл
→ Ссылка