Объединить (объединить с правой стороны) все файлы в каталоге - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь объединить несколько файлов .txt в каталог, специально объединенный в одном из общего столбца X, найденного в фреймах данных.

Импорт нескольких файлов CSV в pandas и объединить в один DataFrame

Python pandas - объединить файлы CSV в каталоге в один

Импортировать несколько вложенных файлов CSV и объединить в один DataFrame

Python для объединения нескольких файлов из каталога в один файл

Лучшая стратегия для объединения большого количества данных используя кадры pandas

import pandas as pd

  df1 = pd.DataFrame({'X': ['X0', 'X1', 'X2', 'X3'],
       ...:                     'B': ['B0', 'B1', 'B2', 'B3'],
       ...:                     'C': ['C0', 'C1', 'C2', 'C3'],
       ...:                     'D': ['D0', 'D1', 'D2', 'D3']})


df2 = pd.DataFrame({'X': ['X0', 'X1', 'X2', 'X3'],
   ...:                     'G': ['G0', 'G1', 'G2', 'G3'],
   ...:                     'H': ['H0', 'H1', 'H2', 'H3'],
   ...:                     'J': ['J0', 'J1', 'J2', 'J3']})

, следуя предыдущим пост-решениям, я построил следующий код

filepath = "D:\\test"

data=[]
for file in glob.iglob(filepath + '/*.txt', recursive=True):

    print(file)

    df=pd.read_csv(file, header=0, skiprows=0, skipfooter=0, na_values=(""," ","NA"))
    data=data.append(df)

data_merge = pd.concat(data, keys = ('X'))    

, но получил

AttributeError: у объекта 'NoneType' нет атрибута 'append'

Как объединить два файла данных по общему столбцу?

ожидаемый результат

enter image description here

enter image description here

Спасибо.

Ответы [ 2 ]

1 голос
/ 05 февраля 2020

Заменить строку

data=data.append(df)

на

data.append(df.set_index('X'))

Это установит столбец X в качестве индекса и добавит их в массив данных. Тогда вам нужно будет изменить строку слияния на

data_merge = pd.concat(data, axis=1).reset_index()

Это приведет к

print(data_merge.mark_down())

|    | X   | B   | C   | D   | G   | H   | J   |
|---:|:----|:----|:----|:----|:----|:----|:----|
|  0 | X0  | B0  | C0  | D0  | G0  | H0  | J0  |
|  1 | X1  | B1  | C1  | D1  | G1  | H1  | J1  |
|  2 | X2  | B2  | C2  | D2  | G2  | H2  | J2  |
|  3 | X3  | B3  | C3  | D3  | G3  | H3  | J3  |

1 голос
/ 05 февраля 2020

Замените эту строку:

data=data.append(df)

на это:

data.append(df)

В отличие от использования append с pandas (то есть df = df.append(dict1)), при использовании append метод в списке, вам не нужно переопределять его

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...