[英]How to read csv files from multiple zip folders located in the same directory using python?
[英]How to access multiple CSV files that share the same name from multiple folders from a zip file
我有一个 zip 文件(本地存储),其中包含多个文件夹。 每个文件夹中都有几个 CSV 文件。 我只需要从每个文件夹中访问 1 个特定的 CSV。 我试图从每个文件夹访问的 CSV 都共享相同的名称,但我无法弄清楚如何从每个文件夹访问特定文件,然后将它们连接到 pandas df 中。
我尝试了以下方法(最初尝试读取所有 CSV):
path = r"C:\Users\...\Downloads\folder.zip"
all_files = glob.glob(os.path.join(path , "/*.csv"))
li = []
for filename in all_files:
df = pd.read_csv(filename, index_col=None)
li.append(df)
frame = pd.concat(li, axis=0, ignore_index=True)
但我得到: ValueError:没有要连接的对象。 CSV 肯定存在且不为空。
我目前正在尝试在 sagemaker 笔记本中执行此操作,不确定这是否也会导致我出现问题。 任何帮助都会很棒。
在 Umar.H 和 mad 的一些挖掘和建议之后,我找到了解决我最初的问题和我最初使用的代码示例的解决方案。
我最初使用的代码无法直接访问 zip 文件,因此我解压缩了该文件并仅在一个常规文件夹上进行了尝试。 通过将 all_files 中的"/*file.csv"
更改为"*/*file.csv
来解决将 df 的li
的空列表修改为不返回空列表的问题。
为了解决我遇到的主要问题,即避免解压缩 zip 文件并访问所有必需的 CSV,我设法让以下工作
PATH = "C:/Users/.../Downloads/folder.zip"
li = []
with zipfile.ZipFile(PATH, "r") as f:
for name in f.namelist():
if name.endswith("file.csv"):
data = f.open(name)
df = pd.read_csv(data, header=None, low_memory = False)
li.append(df)
frame = pd.concat(li, axis=0, ignore_index=True)
希望这对其他拥有大型 zip 文件的人有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.