从 100 个 csv 文件中创建一个大型数据框(需要完全连接)

Creating a large dataframe out of 100 csv files (full join required)

我需要创建一个数据框 100+ csv 文件。我的问题是我有超过 100 个 CSV,每个 CSV 超过 55000 行(作为主键)。

现在 csv 文件之间的区别在于所有列(可能大约 1200 列)都被分成单独的文件。换句话说,我需要根据主行对这些 csv 文件进行 FULL JOIN。

到目前为止我得到了下面的代码,但需要帮助才能完成它。

import os
import glob
import pandas as pd
os.chdir(r'C:\Users\user1\GCP_All')

extension = 'csv'
all_filenames = [i for i in glob.glob('*.{}'.format(extension))]

#combine all files in the list
combined_csv = pd.concat([pd.read_csv(f) for f in all_filenames ])

#export to csv
combined_csv.to_csv(r'C:\Users\user1\GCP_All\combined.csv', index=False, encoding='utf-8-sig')

类似的例子是这样的:

CSV_A:
PK        TOP_SALES  TOP_PURCH
111111    A          B
222222    C          D
333333    E          F

CSV_B:
PK        AVG_SALE   AVG_PURCH
111111    G          H
222222    I          J
333333    K          L

CSV_C:
PK        MIN_SALE   MIN_PURCH
111111    M          N
222222    O          P
333333    Q          R


desired output:
PK    TOP_SALES  TOP_PURCH  AVG_SALE   AVG_PURCH  MIN_SALE  MIN_PURCH
111111    A          B      G          H          M         N
222222    O          P      I          J          O         P
333333    Q          R      K          L          Q         R

提前致谢! :)

PK列转换为索引,然后将axis=1添加到concat:

combined_csv = pd.concat([pd.read_csv(f, index_col=0) for f in all_filenames ], axis=1)

print (combined_csv)
       TOP_SALES TOP_PURCH AVG_SALE AVG_PURCH MIN_SALE MIN_PURCH
PK                                                              
111111         A         B        G         H        M         N
222222         C         D        I         J        O         P
333333         E         F        K         L        Q         R