You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

异常问题:导入Excel后得到空的pd.DataFrame,原因何在?

问题原因及解决方案

嘿,我一眼就看穿问题所在啦!当你用pd.read_excel()指定多个sheet_name时,它返回的是一个字典——键是工作表名称,值是对应工作表的完整DataFrame。但你接下来直接把这个字典传给pd.DataFrame(),完全用错了用法!

为什么会得到空DataFrame?

pd.DataFrame()接收字典参数时,默认会把字典的键当作列名,把对应的值当作该列的行数据。但你的字典里每个值都是一个完整的DataFrame(不是一维的列表/数组),这和pd.DataFrame()的预期输入不匹配,所以最终生成了空的DataFrame。

正确的处理方式

根据你的需求,分两种情况处理:

情况1:合并两个工作表的数据到一个DataFrame里

如果想把Sheet 1和Sheet 2的数据合并成一个大的DataFrame,用pd.concat()把字典里的所有DataFrame拼接起来:

import pandas as pd
# 读取多个sheet,得到字典
data = pd.read_excel('import.xlsx', sheet_name=["Sheet 1", "Sheet 2"], dtype=str)
# 合并所有sheet的DataFrame,重置索引避免重复
df = pd.concat(data.values(), ignore_index=True)
# 可选:指定保留的列(原数据已包含这些列,可省略此步)
df = df[["Header A", "Header B"]]
print(df)

情况2:只使用单个工作表的数据

如果只需要其中一个工作表的数据,直接从字典里取出对应的DataFrame即可:

import pandas as pd
data = pd.read_excel('import.xlsx', sheet_name=["Sheet 1", "Sheet 2"], dtype=str)
# 取出Sheet 1的DataFrame
df = data["Sheet 1"]
# 可选:指定保留的列
df = df[["Header A", "Header B"]]
print(df)

效果验证

运行上面的代码后,你就能得到包含完整数据的DataFrame,再也不会出现空表的情况啦~

内容的提问来源于stack exchange,提问作者Sapperlott

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 21:32:47