为什么这种语法在Python中不起作用?

时间:2013-10-30 13:03:49

标签: python numpy pandas

我使用的是Python 2.7.5,这种格式不起作用。据我所知,它可以在我的另一台计算机上工作,它也有2.7

train_data.ix[:,1:-1]

我得到的错误是:

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

如果我使用train_data[:,1:-1],则错误为:

TypeError: list indices must be integers, not tuple

我该如何解决这个问题?

谢谢!

5 个答案:

答案 0 :(得分:3)

Lists和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'

但是Pandas Series和DataFrame确实有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是Pandas DataFrame,那么train_data.ix[:,1:-1] 选择从第二列到倒数第二列的所有行。 :表示所有行,1:-1表示倒数第二列的第二行。

答案 1 :(得分:1)

python切片表示法的语法是list:

list[start:end:step]

如果切片表示法中有逗号,则会给出元组错误。

答案 2 :(得分: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]

答案 3 :(得分:0)

第一个错误表明list对象没有属性ix(实际上它没有):

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

在第二段代码中,您尝试在切片中使用逗号。根据这个document你不能用python的列表来做。 AFAIK you can do it包含一些numpy结构,因此您需要将列表转换为其中一个。

答案 4 :(得分:0)

您问题的直接答案是它无效,因为您的train_data是一个列表。由于您使用的train_data属性,您尝试理解的代码中的.ix似乎是Pandas DataFrame对象。