将多个CSV的列堆叠到主文件中
我想把很多CSV文件的列数据合并到一个文件里,使用表头来对齐数据。不过这些表头有时候顺序不对,有些还缺失,但文件之间还是有一些可以对应的地方。
比如:
File 1:
Stuff More_Stuff Lots_stuff
0 2 1
2 3 2
4 3
File 2:
Stuff Lots_Stuff More_stuff good_Stuff
6 4 3 1
8 5 4
10
Master File
Stuff More_stuff Lots_Stuff good_stuff
0 2 1 1
2 3 2
4 3 3
6 4 4
8 5
10
这些CSV文件都在一个文件夹里 -> /*.csv
1 个回答
1
你需要先用os.listdir或者glob来创建一个包含所有csv文件的列表。接着,遍历这个列表,把每个csv文件读入一个数据框(dataframe)中。然后,使用concat函数把这些数据框合并成一个长的数据框。pandas.concat()会自动识别表头,并把它们对齐。最后,你可以把这个数据框输出成一个csv文件。
import pandas as pd
import glob
globbed_files = glob.glob("*.csv") #creates a list of all csv files
data = [] # pd.concat takes a list of dataframes as an agrument
for csv in globbed_files:
frame = pd.read_csv(csv)
data.append(frame)
bigframe = pd.concat(data, ignore_index=True) #dont want pandas to try an align row indexes
bigframe.to_csv("output.csv")