Python 3.x 在数据框中打印None和NaN值会产生令人困惑的结果

Python 3.x 在数据框中打印None和NaN值会产生令人困惑的结果,python-3.x,pandas,dataframe,nan,nonetype,Python 3.x,Pandas,Dataframe,Nan,Nonetype,我正在使用SQL查询,使用Pandas read_SQL()函数从SQL Server数据库获取一些数据。在最初的几次打嗝之后,一切似乎都很顺利。但是,使用print()显示提取的数据会产生非常混乱的输出 在查询数据库时,我知道其中一个表的最新行尚未填充。因此,列的顶部行包含字符串,而底部行不包含字符串。这可以通过使用以下数据帧来简化 id text 0 1 some words <-- top rows contain strings 1 2

我正在使用SQL查询,使用Pandas read_SQL()函数从SQL Server数据库获取一些数据。在最初的几次打嗝之后,一切似乎都很顺利。但是,使用print()显示提取的数据会产生非常混乱的输出

在查询数据库时,我知道其中一个表的最新行尚未填充。因此,列的顶部行包含字符串,而底部行不包含字符串。这可以通过使用以下数据帧来简化

    id         text
0    1   some words   <-- top rows contain strings
1    2         None
2    3         None
3    4         None
4    5         None
5    6         None
6    7         None
7    8         None
8    9         None
9   10         None   <-- bottom rows contain None
在Python 3.4中打印数据帧时,我得到了预期的输出,即:

   id        text
0   1  some words
1   2        None
2   3        None
3   4        None
4   5        None
5   6        None
6   7        None
7   8        None
8   9        None
9  10        None
但是,在打印大型数据帧时,输出会自动拆分,以仅显示顶行和底行。由于此演示只有10行,因此我将设置显示参数,以便即使使用此小数据帧也能进行拆分:

with pd.option_context('display.max_rows', 8, 'display.max_columns', 3):
    print(tempDF)
但是,现在我得到以下输出:

    id        text
0    1  some words
1    2        None
2    3        None
3    4        None
..  ..         ...
6    7         NaN
7    8         NaN
8    9         NaN
9   10         NaN
看起来,如果分割下面的所有值都是None,那么它们将被解释为NaN。但是,拆分上方的相同值(也有一些真正的字符串)被解释为无


关于None和NaN之间的区别似乎有很多争论。将相同的数据显示为两种不同的类型似乎非常令人困惑。我不知道这是由蟒蛇还是熊猫引起的。这是预定的功能还是bug?

这肯定不是预定的功能。你能发布错误报告吗?更奇怪的是,当
text
列为all
None
s时,显示在顶部和底部都是NaN。这当然是一份提交的bugBug报告。作为参考,此问题可在此处跟踪:
    id        text
0    1  some words
1    2        None
2    3        None
3    4        None
..  ..         ...
6    7         NaN
7    8         NaN
8    9         NaN
9   10         NaN