gpt4 book ai didi

python - 从子目录中搜索 CSV 并将文件夹名称添加为一列

转载 作者:行者123 更新时间:2023-12-01 23:25:17 26 4
gpt4 key购买 nike

我想从我的工作目录中的不同子目录中读取 csv,以创建一个组合的 csv 文件。组合的 csv 应该有一列,其中包含从中读取特定 csv 的子目录名称。

这是我试过的。

import os
import glob
import pandas as pd

all_filenames = [i for i in glob.glob('*/*.csv'),recursive=True)]
list_subfolder = [f.name for f in os.scandir(ride_path) if f.is_dir()]

df_list = []

for i in range(len(all_filenames)):
dir_name = list_subfolder[i]
current_csv = all_filenames[i]
data = pd.read_csv(current_csv)
data["sub_folder"]= dir_name
df_list.append(data)

combined_df = pd.concat(df_list)
combined_df.to_csv("combined_csv.csv", index=False)

问题是,它添加了其中没有 csvs 的子目录,这是错误和有问题的。实现这一权利的最佳方式是什么。

最佳答案

您可以通过 pathlib 模块执行此操作:

from pathlib import Path

inp_path = Path('.') # specify the inp path. Here, ('.') means current working dir
df_list= []

for csv_file in inp_path.glob('**/*.csv'): # glob here will return generator obj which will yield csv file one by one
df = pd.read_csv(csv_file)
df['file_name'] = csv_file.parent # possible to get parent dir via pathlib
df_list.append(df_list)


combined_df = pd.concat(df_list)
combined_df.to_csv("combined_csv.csv", index=False)

注意

1- 如果您只需要名称,请使用 csv_file.parent.name

2- 如果您想要父目录的完整路径,请使用 csv_file.parent.absolute()

关于python - 从子目录中搜索 CSV 并将文件夹名称添加为一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67350952/

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