我正在读取具有以下结构的excel文件-
并使用以下代码-
df = pd.read_excel("Myfile.xlsx", header=[0,1])
print(df.columns.ravel())
我希望输出应该像
[('Unnamed: 0_level_0', 'Id') ('Name', 'First Name')
('Name', 'Middle name') ('Name', 'Last name') ('Unnamed: 1_level_0', 'Age')
('Unnamed: 2_level_0', 'Email') ('Unnamed: 3_level_0', 'Phone') ('Address', 'House NO')
('Address', 'Street') ('Address', 'City') ('Address', 'State')
('Address', 'PIN')]
但是我得到的是-
[('Unnamed: 0_level_0', 'Id') ('Name', 'First Name')
('Name', 'Middle name') ('Name', 'Last name') ('Name', 'Age')
('Name', 'Email') ('Name', 'Phone') ('Address', 'House NO')
('Address', 'Street') ('Address', 'City') ('Address', 'State')
('Address', 'PIN')]
任何人都有线索,为什么我无法获得所需的输出,或者它是所需的?由于中间的列(“年龄”,“电子邮件和电话”)不是“名称”(“ 0级”列)的一部分,因此显示的内容不正确。有解决这个问题的线索吗?
答案 0 :(得分:0)
我能够对此进行复制。我的猜测是,pandas没有考虑列(名称,地址)是否已合并,并假设这些列代表下方和右侧的单元格。
docs中没有提供任何原因(请参见index_label)。
这很有意义,假设您有一张看起来像这样的工作表:
HEADER1 HEADER2
Val1,Val2,Val3,Val4,Val5,Val6
前三个Val看起来像属于HEADER1。在您的屏幕截图中,它们显然没有。由于 Unnamed:0_level_0 有点“未定义”,他们可以逃避说标签有些不确定,但是它们应该像合并屏幕截图那样处理合并单元格的情况,因为它看起来像错误。
您可以尝试做的另一件事是在“未命名”列中放置一个空白的''空格,以将其强制为未标记。可能还有其他解决方法。