pandas ------ 如果读取带有 multi-index 和 Multi-column 表头的数据
- 引言
- 正文
引言
之前我们在 《Pandas ------ 向 Excel 文件中写入含有 multi-index 和 Multi-column 表头的数据》 一文中介绍了如何向 Excel
文件中写入含有 multi-index
和 Multi-column
表头的数据。但是我们也知道由于 pandas
存在一个 bug
,导致列向表头与数据之间存在一行的间隔,那么如果我们要读取我们写入的数据,且希望它能够被正常显示该怎么办呢?
正文
如果使用的数据形式如下:
我们可以使用如下代码获取 layer1
对应的列数据:
import numpy as np
import pandas as pd
data = pd.read_excel('output.xlsx')
print(np.array(data['layer1'][2:]))
"""
result:
['a' 'c']
"""
可以看到,通过使用上述方法,我们成功获取到了我们想要的结果。np.array(data['layer1'][2:]
中的索引值为什么是 2:
,这是因为我们有两行列向表头,且因为 bug
中间间隔了一行,因此,索引值 0
对应 col1
行,1
对应空行,而 2
对应数据行。
关于为什么使用 np.array() 函数,可以参考 Pandas ------ 通过 np.array 函数去掉数据中的 index。
那如果我们想要处理的数据还有合并表头呢?
首先我们打印一下数据进行查看:
import pandas as pd
data = pd.read_excel('output.xlsx')
print(data)
"""
result:
Unnamed: 0 layer1 Unnamed: 2
0 NaN col 1 col 2
1 NaN NaN NaN
2 row 1 a b
3 row 2 c d
"""
可以看到,此时合并行的表头非常奇怪,只有一列是 layer1
, 而另一个列是 Unamed: 2
。为了处理这个问题,我们需要在读入的时候指定第二行 col1
和 col2
作为 column
表头。然后再读取我们想要的数据。
import numpy as np
import pandas as pd
data = pd.read_excel('output.xlsx', names=['col 1', 'col 2'])
print(np.array(data['col 1'][2:]))
"""
result:
['a' 'c']
"""
可以看到通过上面的操作,我们也得到了想要的结果。
如果大家觉得有用,就请点个赞吧~