异常问题:导入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
相关产品推荐
相关产品推荐

