2012-07-27 57 views
0

我繪製了一個分割爲DataFrame的整列充滿NaN的問題。NaN柱被繪製爲熊貓的全0列

如何來:通過與如果列用零填充繪製0行

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

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

從不同。 應該不是第一個代碼的工作就如同:

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

而且還繪製只是充滿楠系列作品罰款:

​​

我缺少什麼?是否有正確的方式來繪製所有NaN的列或者是一個錯誤?

回答

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的,那麼空爲True,並且值被設定爲np.zeros()。

注意:我沒有添加「是這樣嗎?」評論:它在源代碼中! (熊貓v.0.8.1)。

我提出了一個關於它的錯誤:https://github.com/pydata/pandas/issues/1696