-1

我正在使用 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

我该如何解决这个问题?

谢谢!

4

5 回答 5

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'

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

于 2013-10-30T13:24:31.030 回答
1

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

list[start:end:step]

如果切片符号中有任何逗号,它会给你元组错误。

于 2013-10-30T13:09:50.037 回答
0

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

于 2013-10-30T13:36:09.393 回答
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]
于 2013-10-30T13:09:51.673 回答
0

第一个错误说list对象没有属性ix(事实上它没有):

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

在第二段代码中,您尝试在切片中使用逗号。根据这个文档,你不能用 python 的列表来做。AFAIK你可以用一些numpy结构来做到这一点,所以你需要将你的列表转换为其中之一。

于 2013-10-30T13:10:59.247 回答