gpt4 book ai didi

python - 使用 pandas 循环遍历 .xlsx 文件,仅执行第一个文件

转载 作者:太空宇宙 更新时间:2023-11-03 17:23:50 25 4
gpt4 key购买 nike

我的最终目标是将充满 .xlsx 文件的文件夹的内容合并为一个大文件。

我认为下面的代码就足够了,但它只执行第一个文件,而且我不明白为什么它停在那里。文件很小(约 6 KB),因此不需要等待。如果我打印 f_list,它会显示完整的文件列表。那么,我哪里出错了? 需要明确的是,没有返回错误,它只是不执行整个 for 循环。我觉得应该有一个简单的修复,但作为 Python 和编码新手,我遇到了麻烦看到了。

我在 Windows 8 上使用 Anaconda 执行此操作。

import pandas as pd
import glob
f_list = glob.glob("C:\\Users\\me\\dt\\xx\\*.xlsx") # creates my file list
all_data = pd.DataFrame() # creates my DataFrame

for f in f_list: # basic for loop to go through file list but doesn't
df = pd.read_excel(f) # reads .xlsx file
all_data = all_data.append(df) # appends file contents to DataFrame
all_data.to_excel("output.xlsx") # creates new .xlsx

使用新信息进行编辑:

在尝试了一些建议的更改后,我注意到输出声称这些文件是空的,但其中 1 个文件比其他文件稍大。如果我将它们放入 DataFrame 中,它会声称 DataFrame 为空。如果我将它放入字典中,它会声称没有关联的值。这可能与文件大小有关吗?许多(如果不是大多数)这些文件都有 3-5 行 5 列。它看到的有 12 行。

最佳答案

我强烈建议将 DataFrame 读入字典中:

sheets = {f: pd.read_excel(f) for f in f_list}

一方面,这非常易于调试:只需检查 REPL 中的字典即可。

另一个是,您可以一次性将它们有效地连接到一个 DataFrame 中:

pd.concat(sheets.values())

注意:这比追加要快得多,后者必须在每次追加调用时分配一个临时 DataFrame。

<小时/>

另一个问题是您的 glob 可能无法拾取所有文件,您应该通过打印 f_list 来检查是否拾取了所有文件。

关于python - 使用 pandas 循环遍历 .xlsx 文件,仅执行第一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32831446/

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