如何使用 Python 遍历目录中的文件并输出 pandas 给定某些约束的数据框?
How can I use Python to walk through files in directories and output a pandas data frame given certain constraints?
所以我使用的是 Pyhton,我有一个父目录和两个子目录,子目录又包含许多目录,每个目录包含三个文件。我想获取每个目录的第三个文件(这是一个 .CSV 文件),并将它们一起解析为 pandas 数据帧。这是我到目前为止的代码
import os
rootdir ='C:\Dir\Dir\Dir\root(parent)dir'
# os.listdir(rootdir)
# os.getcwd()
filelist = os.listdir(rootdir)
# file_count = len(filelist)
def list_files(dir):
r = []
for root, dirs, files in os.walk(dir):
# if files.startswith('C74'):
for name in files:
r.append(os.path.join(root, name))
return r
filelist = list_files(rootdir)
现在 "filelist" 我将所有目录中包含的所有文件路径都作为字符串获取。现在我需要找到:
1. 以三个特定字母开头的文件名(例如 funtest,在本例中第一个字母是 fun)
2. 取每三个文件,并从中构建一个 pandas 数据框,以便我可以继续执行数据分析。
IIUC 我们可以使用 pathlib 中的递归函数更容易地做到这一点:
from pathlib import Path
csv = [f for f in Path(r'parent_dir').rglob('*C74*.csv')]
df = pd.concat([pd.read_csv(f) for f in csv])
如果您想再次对列表进行子集化,您可以
subset_list = [x for x in csv if 'abc' in x.stem]
测试
[x for x in csv if 'abc' in x.stem]
out : ['C74_abc.csv', 'abc_C74.csv']
所以我使用的是 Pyhton,我有一个父目录和两个子目录,子目录又包含许多目录,每个目录包含三个文件。我想获取每个目录的第三个文件(这是一个 .CSV 文件),并将它们一起解析为 pandas 数据帧。这是我到目前为止的代码
import os
rootdir ='C:\Dir\Dir\Dir\root(parent)dir'
# os.listdir(rootdir)
# os.getcwd()
filelist = os.listdir(rootdir)
# file_count = len(filelist)
def list_files(dir):
r = []
for root, dirs, files in os.walk(dir):
# if files.startswith('C74'):
for name in files:
r.append(os.path.join(root, name))
return r
filelist = list_files(rootdir)
现在 "filelist" 我将所有目录中包含的所有文件路径都作为字符串获取。现在我需要找到: 1. 以三个特定字母开头的文件名(例如 funtest,在本例中第一个字母是 fun) 2. 取每三个文件,并从中构建一个 pandas 数据框,以便我可以继续执行数据分析。
IIUC 我们可以使用 pathlib 中的递归函数更容易地做到这一点:
from pathlib import Path
csv = [f for f in Path(r'parent_dir').rglob('*C74*.csv')]
df = pd.concat([pd.read_csv(f) for f in csv])
如果您想再次对列表进行子集化,您可以
subset_list = [x for x in csv if 'abc' in x.stem]
测试
[x for x in csv if 'abc' in x.stem]
out : ['C74_abc.csv', 'abc_C74.csv']