为什么有很多" NaN"从Excel文件导入MultiIndex Dataframe后的索引?

时间:2017-01-01 01:52:45

标签: python-3.x pandas dataframe

我在Excel中有一个Excel文件如下所示:

            2016-1-1    2016-1-2    2016-1-3    2016-1-4
300100  am    1           3            5           1
        pm    3           2            4           5
300200  am    2           5            2           6
        pm    5           1            3           7
300300  am    1           6            3           2
        pm    3           7            2           3
300400  am    3           1            1           3
        pm    2           5            5           2
300500  am    1           6            6           1
        pm    5           7            7           5

但是在我通过pd.read_excel导入并打印之后,它在Python中显示如下:

            2016-1-1    2016-1-2    2016-1-3    2016-1-4
300100  am    1           3            5           1
NaN     pm    3           2            4           5
300200  am    2           5            2           6
NaN     pm    5           1            3           7
300300  am    1           6            3           2
NaN     pm    3           7            2           3
300400  am    3           1            1           3
NaN     pm    2           5            5           2
300500  am    1           6            6           1
NaN     pm    5           7            7           5

如何在没有太多" NaN"谢谢!

3 个答案:

答案 0 :(得分:2)

大多数情况下,当Excel看起来与示例中的内容相似时,它确实会在这些空格所在的位置显示空白。但是,细胞被合并,所以它看起来很漂亮。将它导入pandas时,它会将它们读为空或NaN。

要修复它,请向前填充空单元格,然后设置为索引。

df.ffill()

答案 1 :(得分:1)

如果无法访问Excel文件或版本知识,则无法确定,但只是看起来您有一列数字(第一列),其他每一行都是空白的。 Pandas期望统一填充列,因此在Excel中,对于每个第一列编号(id?),AM和PM都有一种“结构”信息,Pandas只看到两行,一行有无效的第一列。根据您实际想要访问此数据的方式,一个简单的解决方法是将每个NaN替换为其正上方的数字,因此每行包含“id”的AM或PM信息。另一个修复方法是将列结构更改为2016-1-1-am和2016-1-1-pm字段。

答案 2 :(得分:0)

您正在寻找fillna方法:

df = df.fillna('')