Python Pandas read_excel 返回空数据框

问题描述 投票:0回答:5

读取一个返回空数据框的简单 xls,我一辈子都无法弄清楚:

path = ('c:/Users/Desktop/Stuff/Ready')
files = os.listdir(path)
print(files)

files_xlsx = [f for f in files if f[-3:] == 'xlsx']

readyorders = pd.DataFrame()
for filename in files_xlsx:
    with open(os.path.join(path, filename)) as f:
        data = pd.read_excel(f)
        readyorders = readyorders.append(data)

print(readyorders)

Excel 只是两个简单的列...是不是太早了?

python
5个回答
6
投票

我遇到了类似的问题,结果发现有两种类型的 XLSX:“Excel 工作簿”(位于下图中列表的顶部)和“Strict Open XML Spreadsheet”(带有复选标记)。后者在 pandas 中返回一个空电子表格,因此使用 Excel 工作簿 (.xlsx) 不会出现问题。

enter image description here


3
投票

我也遇到了同样的问题,后来我发现这是因为我的excel文件中有很多工作表,而我没有指定工作表名称。


3
投票

有时还有一个“隐藏工作表”,它会导致导出错误。那么您应该为工作表使用sheet_name参数,或者您也可以使用

sheet_name=None
。然后你会得到一个包含隐藏工作表的空 df 和其他数据的字典


1
投票

f[-3:] == 'xlsx'
永远不会是真的,因为您正在评估最后三个字符并将其与四个字符的字符串进行比较。

尝试

f[-4:] == 'xlsx'

顺便说一句,附加数据帧非常慢。 尝试连接:

readyorders = pd.concat([pd.read_excel(f) for f in files if f[-5:] == '.xlsx']

0
投票

我的返回空数据框,我检查:

        xl = pd.ExcelFile(path)
        print(xl.sheet_names)  # see all sheet names

我发现了一个隐藏的工作表名称“Kangatang”

我谷歌了一下,知道它是病毒,所以你应该检查一下你的

© www.soinside.com 2019 - 2024. All rights reserved.