合并多个子文件夹中具有相同名称的csv文件

时间:2019-05-08 02:49:23

标签: python-3.x pandas

我的文件夹中有csv文件,我想在一个csv中读取和合并这些文件。

文件夹A具有2个子文件夹B和C,并且B和C具有其他子文件夹,而csv文件位于最后一个子文件夹中。

这是文件夹图: enter image description here

2 个答案:

答案 0 :(得分:1)

您可以使用os.walkos.walk为您提供一个元组列表,其中元组的最后一部分代表当前目录中的所有文件名。

import os
path = os.path.join('path', 'to', 'directory')
files = [os.path.join(path,file) for dir, dir_name, file_list in os.walk(path) for file in file_list]

复杂的列表理解基本上就是:

# unpack the tuple into dir, dir_name, file_list

files = []
for dir, dir_name, file_list in os.walk(path):
    for file in file_list:
        files.append(os.path.join(path,file))

然后像这样使用pd.concat

import pandas as pd

combined_df = pd.concat([pd.read_csv(file) for file in files])

答案 1 :(得分:0)

您可以使用globpandas.concat

import glob
import pandas as pd

files = glob.glob("A/*/*/*.csv")
df = pd.concat([pd.read_csv(f) for f in files])

df.to_csv("merged.csv")