Skip to main content
 首页 » 编程设计

python之从多个 csv 文件中抓取一个特定的列并合并为一个

2025年05月04日15wayfarer

我只想从我的所有 csv 文件中获取第 4 列中的数据,并将数据写入单个文件。每个第 4 列都有一个唯一的标题名称,其中包含根文件夹的名称+csv 名称,如 FolderA1

文件夹A/

1.csv |INFO  INFO  INFO  FolderA1  INFO 
       Apple Apple Apple Orange    Apple 
 
2.csv |INFO  INFO  INFO  FolderA2 INFO 
       Apple Apple Apple Cracker  Apple 
 
3.csv |INFO  INFO  INFO  FOLDERA3 INFO 
       Apple Apple Apple Orange  Apple 

我如何才能将第 4 列数据过滤到单个 .xlsx 文件中,并将下一个文件夹 csv 放入新工作表或将其与之前的文件夹 csv 分开?

concentrated.xlsx | FOLDERA1 FOLDERA2 FOLDERA3   FOLDERB1 FOLDERB2 FOLDERB3 
                    ORANGE   CRACKER   ORANGE    ORANGE   CRACKER  ORANGE 

请您参考如下方法:

我会使用 pandas.read_csv 附带的 usecols 参数。

def read_4th(fn): 
    return pd.read_csv(fn, delim_whitespace=1, usecols=[3]) 
 
files = ['./1.csv', './2.csv', './3.csv'] 
 
big_df = pd.concat([read_4th(fn) for fn in files], axis=1) 
 
big_df.to_excel('./mybigdf.xlsx') 

对于多个文件夹,使用 glob。

假设您有两个文件夹“FolderA”和“FolderB”,它们都位于文件夹“./”中,并且您想要两个文件夹中的所有 csv 文件。

from glob import glob 
 
files = glob('./*/*.csv') 

然后按照上面指定的方式运行其余部分。