Python pandas:为什么df.iloc[:,:-1].my training data的值只选择到最后第二列?

2024-10-03 17:19:39 发布

您现在位置:Python中文网/ 问答频道 /正文

简单地说

对于相同的训练数据帧df,当我使用 X = df.iloc[:, :-1].values,它将选择到数据帧的第二个最后一列,而不是最后一列(这是我想要的,但这是我以前从未见过的奇怪行为),我知道这是第二个最后一列的值,而该行的最后一列的值是不同的。

但是,使用 y = df.iloc[:, -1].values给我最后一列值的行向量,这正是我想要的。

为什么X的负1给了我倒数第二列的值?

Error


Tags: 数据dfvalues倒数iloc行向量
3条回答

我认为在df中只有两列,因为如果有更多的列,^{}请选择所有没有最后一列的列:

df = pd.DataFrame({'A':[1,2,3],
                   'B':[4,5,6],
                   'C':[7,8,9],
                   'D':[1,3,5],
                   'E':[5,3,6],
                   'F':[7,4,3]})

print (df)
   A  B  C  D  E  F
0  1  4  7  1  5  7
1  2  5  8  3  3  4
2  3  6  9  5  6  3

print(df.iloc[:, :-1])
   A  B  C  D  E
0  1  4  7  1  5
1  2  5  8  3  3
2  3  6  9  5  6

X = df.iloc[:, :-1].values
print (X)
[[1 4 7 1 5]
 [2 5 8 3 3]
 [3 6 9 5 6]]

print (X.shape)
(3, 5)

为了清楚起见

With respect to python syntax, this question has been answered here.

Python列表切片语法声明,对于a:b它将得到a和所有的内容,但不包括ba:将得到a及其之后的所有内容。:b将在b之前获得所有内容,但不会b-1的列表索引引用最后一个元素。:-1遵循与上面相同的标准,这将获取最后一个元素之前的所有内容,而不是最后一个元素。如果要包含最后一个元素,请使用:

Bcz上限是独占的。类似于切片列表:

a=[1,2,3,4]

a[:3]

将导致[1,2,3]。它没有占用最后一个元素。

相关问题 更多 >