我在绘制切片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的列,还是一个bug?
答案 0 :(得分:1)
这看起来像pandas
中的错误。查看源代码,在pandas.tools.plotting
, lines 554:556中:
empty = df[col].count() == 0
# is this right?
values = df[col].values if not empty else np.zeros(len(df))
如果列仅包含NaN,则empty为True,值设置为np.zeros()。
注意:我没有添加“这是对的吗?”评论:它在源代码中! (pandas v.0.8.1)。
我提出了一个关于它的错误:https://github.com/pydata/pandas/issues/1696