2013-10-30 323 views
-1

我正在使用Python 2.7.5,此格式不起作用。至於我記得它的作品也有2.7爲什麼這個語法在Python中不起作用?

train_data.ix[:,1:-1] 

我得到的錯誤是我的其他電腦上:

AttributeError: 'list' object has no attribute 'ix' 

如果我使用train_data[:,1:-1]那麼錯誤:

TypeError: list indices must be integers, not tuple 

我該如何解決這個問題?

謝謝!

+1

你的目標是什麼? train_data和train_data.ix是什麼類型? – Danstahr

+0

實際上我試圖理解別人的代碼,其中的確切線是: all_data = numpy.vstack((train_data.ix [:,1:-1],test_data.ix [:,1:-1])) 最後我想從數據集中選擇特定的列 – dsauce

+0

它適用於''numpy.ndarray''類型的對象,而不是通用列表。 – fjarri

回答

1

爲Python切片表示法的語法列表:

list[start:end:step] 

如果在切片標誌的任何逗號,它會給你的元組的錯誤。

0

如果使用

list1=[1,2,3,4,5,6,7] 
    >>> list1[:1:-1] 
    [7, 6, 5, 4, 3] 

,如果你想扭轉列表中,您可以使用,

>>> list1[::-1] 
[7, 6, 5, 4, 3, 2, 1] 
0

第一個錯誤說list對象不具有的屬性ix(和它事實上沒有):

>>> [].ix 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'list' object has no attribute 'ix' 

在第二段代碼中,你是t試圖在切片中使用逗號。根據這document你不能用python的列表。 AFAIK you can do it與一些numpy結構,所以你需要將你的列表轉換爲其中之一。

3

列表和NumPy的數組沒有一個ix方法:

In [8]: import numpy as np 
In [10]: x = np.array([]) 

In [11]: x.ix 
AttributeError: 'numpy.ndarray' object has no attribute 'ix' 

但熊貓系列和DataFrames確實有一個ix方法:

In [16]: import pandas as pd 

In [17]: y = pd.Series([1,2]) 

In [18]: y.ix[0] 
Out[18]: 1 

In [19]: y.ix[1] 
Out[19]: 2 

如果train_data是熊貓數據框,然後train_data.ix[:,1:-1] 選擇從第二列到倒數第二列的所有行。 :表示所有行,1:-1表示倒數第二列。

0

直接回答你的問題是,它不工作,因爲你的train_data是一個列表。看起來您試圖瞭解的代碼中的train_data是由於您正在使用的.ix屬性而導致的Pandas DataFrame對象。