0

我在绘制一个DataFrame充满 NaN 的整个列的切片时遇到了一些问题。

怎么会:

pandas.DataFrame(
    dict(
        A=pandas.Series([np.NaN]*32),
        B=pd.Series(range(-1,32))
    )
).plot()

不同于:

#Ugly fix
pandas.DataFrame(
    dict(
        A=pandas.Series( [0] + [numpy.NaN]*32),
        B=pd.Series(range(-1,32))
    )
).plot()

通过绘制一条 0 线,就好像该列用零填充一样。第一个代码不应该像这样工作:

pylab.plot(
    range(0,33),
    range(-1,32),
    range(0,32),
    [numpy.NaN]*32
)

并且仅绘制一个充满 NaN 的系列也可以正常工作:

pandas.Series([numpy.NaN]*32).plot()

我错过了什么?有没有正确的方法来绘制一个包含所有 NaN 的列,或者它是一个错误?

4

1 回答 1

1

这看起来像pandas. 查看源代码,pandas.tools.plotting第 554:556 行

empty = df[col].count() == 0                                       
# is this right?                                                   
values = df[col].values if not empty else np.zeros(len(df))        

如果该列仅包含 NaN,则空为 True,并且值设置为 np.zeros()。

注意:我没有添加“是这样吗?” 评论:它在源代码中!(熊猫 v.0.8.1)。

我提出了一个关于它的错误:https ://github.com/pydata/pandas/issues/1696

于 2012-07-27T16:18:18.887 回答