将多个CSV的列堆叠到主文件中

0 投票
1 回答
1028 浏览
提问于 2025-04-18 17:50

我想把很多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")

撰写回答