gpt4 book ai didi

python - 将不同目录中的多个.csv文件读取到pandas DataFrame中

转载 作者:太空宇宙 更新时间:2023-11-03 16:05:35 24 4
gpt4 key购买 nike

我的DataFrame有一个索引SubjectID,每个Subject ID都有自己的目录。每个主题目录中都有一个 .csv 文件,其中包含我想要放入 DataFrame 中的信息。使用我的SubjectID 索引,我想读取每个主题的.csv 文件标题,并将其放入我的DataFrame 中的新列中。

除了个别主题编号外,每个主题目录都具有相同的路径。

我找到了将多个 .csv 文件从单个目标目录读取到 pandas DataFrame 中的方法,但不能从多个目录中读取。以下是我用于从目标目录导入多个 .csv 文件的一些代码:

subject_path = ('/home/mydirectory/SubjectID/')
filelist = []
os.chdir('subject_path')
for files in glob.glob( "*.csv" ) :
filelist.append(files)

# read each csv file into single dataframe and add a filename reference column
df = pd.DataFrame()
columns = range(1,100)
for c, f in enumerate(filelist) :
key = "file%i" % c
frame = pd.read_csv( (subject_path + f), skiprows = 1, index_col=0, names=columns )
frame['key'] = key
df = df.append(frame,ignore_index=True)

我想做类似的事情,但迭代地进入不同的主题目录,而不是单个目标目录。

编辑:我想我想使用 os 而不是 pandas 来执行此操作,有没有办法使用循环来使用 os 搜索多个目录?

最佳答案

考虑 os.walk() 的递归方法自上而下(默认=TRUE)或自下而上读取所有目录和文件。此外,您可以使用正则表达式检查名称以专门过滤 .csv 文件。

下面将从目标根目录 /home/mydirectory 导入任何子/孙文件夹中的所有 csv 文件。因此,请务必检查非主题 csv 文件是否存在,否则相应地调整 re.match():

import os, re
import pandas as pd

# CURRENT DIRECTORY (PLACE SCRIPT IN /home/mydirectory)
cd = os.path.dirname(os.path.abspath(__file__))

i = 0
columns = range(1,100)
dfList = []

for root, dirs, files in os.walk(cd):
for fname in files:
if re.match("^.*.csv$", fname):
frame = pd.read_csv(os.path.join(root, fname), skiprows = 1,
index_col=0, names=columns)
frame['key'] = "file{}".format(i)
dfList.append(frame)
i += 1

df = pd.concat(dfList)

关于python - 将不同目录中的多个.csv文件读取到pandas DataFrame中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39838332/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com