2013-05-07 76 views
1

我有一個數據幀的對象,DF如下:熊貓繪圖功能給ValueError異常:X和Y必須具有相同的第一維

<class 'pandas.core.frame.DataFrame'> 
DatetimeIndex: 4460 entries, 2013-04-02 00:24:14.655000 to 2013-05-01 08:05:37.820000 
Columns: 3928 entries, 0.36813255,37.5913675 to 9.99963814285,76.3137843191 
dtypes: float64(3928) 

df.plot()給我

ValueError: x and y must have same first dimension 

有作爲數據幀中沒有NaN值。奇怪的是,某些範圍的數據框確實打好了。例如下面的工作:

df.ix[:,:3].plot() 

任何想法可能發生什麼?

編輯:

的樣本數據:

lat_lng      0.36813255,37.5913675 1.33731422941,103.965656679 
date                   
2013-04-02 00:24:14.655000      0       0 
2013-04-02 08:05:39.719000      0       1 
2013-04-02 08:16:56.986000      0       0 
2013-04-02 08:18:00.408000      0       0 
2013-04-02 08:18:38.530000      10       0 
2013-04-02 08:24:02.663000      0       0 
2013-04-02 08:24:27.286000      0       0 
2013-04-02 08:24:46.466000      0       1 
2013-04-02 08:25:32.366000      0       0 
2013-04-02 08:25:52.018000      0       0 

這不積:

lat_lng      0.36813255,37.5913675 1.33731422941,103.965656679 1.36110856929,103.886645147 10.0001097537,76.3023939556 
date                                  
2013-04-02 00:24:14.655000      0       0       0       0 
2013-04-02 08:05:39.719000      0       0       0       0 
2013-04-02 08:16:56.986000      0       0       0       0 
2013-04-02 08:18:00.408000      0       0       0       0 
2013-04-02 08:18:38.530000      0       0       0       0 
2013-04-02 08:24:02.663000      0       0       0       0 
2013-04-02 08:24:27.286000      0       0       0       0 
2013-04-02 08:24:46.466000      0       0       0       0 
2013-04-02 08:25:32.366000      0       0       0       0 
2013-04-02 08:25:52.018000      0       0       0       0 
+0

你可以發佈數據本身嗎?什麼是你的熊貓和matplotlib版本? – 2013-05-07 10:03:44

+0

這些值是0到100之間的數字。Pandas版本是0.11.0,ans matplotlib是1.2.1。 – Nithin 2013-05-07 10:28:39

+0

這個樣本數據圖很好,但我期望整個數據集有4000個long_lats,每個數據集都有4500個日期時間會看起來很亂,幾乎肯定沒有用...... – 2013-05-07 11:00:07

回答

0

還有東西列名錯誤(太長了?)...我可以確認你的第二個例子不會在0.11上繪圖。

如果使用範圍,則此地塊罰款:

df.columns = range(4) 

而且如果你使用更復雜的一個多指標/東西繪製罰款:(該地塊也沒關係)

In [10]: pd.MultiIndex.from_tuples(map(lambda X: [float(x) 
                for x in X.split(',')], 
             df.columns), 
            names=['lat', 'long']) 

Out[11]: 
MultiIndex 
[(0.36813255, 37.5913675), (1.33731422941, 103.965656679), (1.36110856929, 103.886645147), (10.0001097537, 76.3023939556) 

In [12]: df1.columns = Out[11] 

In [13]: df1 
Out[13]: 
lat       0.368133 1.337314 1.361109 10.000110 
long      37.591367 103.965657 103.886645 76.302394 
date 
2013-04-02 00:24:14.655000   0   0   0   0 
2013-04-02 08:05:39.719000   0   0   0   0 
2013-04-02 08:16:56.986000   0   0   0   0 
2013-04-02 08:18:00.408000   0   0   0   0 
2013-04-02 08:18:38.530000   0   0   0   0 
2013-04-02 08:24:02.663000   0   0   0   0 
2013-04-02 08:24:27.286000   0   0   0   0 
2013-04-02 08:24:46.466000   0   0   0   0 
2013-04-02 08:25:32.366000   0   0   0   0 
2013-04-02 08:25:52.018000   0   0   0   0 

+0

我已經嘗試過更長的列名,它工作得很好。 – Nithin 2013-05-07 16:01:05

+0

@Nithin是啊,我不認爲它可以是這樣,但它肯定是*的東西*與列名稱(因爲當改變他們的情節好)... – 2013-05-07 16:03:31

+0

使它成爲一個多指標,繪製所有4600行:) 我需要更多地注意multiIndex。 – Nithin 2013-05-07 16:36:21

1

我有同樣的錯誤味精的原因是列名了一個數字而不是一個文本!

+0

使用str()將列名顯式轉換爲字符串。就我而言,我相信它不是一個數字。 – Nithin 2013-05-07 15:57:19

+0

僅僅因爲你得到相同的錯誤信息並不一定意味着你有同樣的問題。 – ApproachingDarknessFish 2013-05-07 16:09:56

相關問題