从 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
我需要创建一个数据框 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