如何选择数据帧的最后一列

Nat*_*ate 45 python pandas

我已经做了一些寻找这个问题的答案,但我能弄清楚的是:

df[df.columns[len(df.columns)-1]]
Run Code Online (Sandbox Code Playgroud)

对我来说,这似乎是unweildy,而不是pythonic(和慢?).

在没有指定列名的情况下,为pandas数据帧中的最后一列选择数据的最简单方法是什么?

Bou*_*oud 90

使用iloc并选择:最后一列(-1)的所有行():

df.iloc[:,-1]
Run Code Online (Sandbox Code Playgroud)

  • 我尝试这样做,但出现错误,提示“索引器过多” (2认同)

小智 26

这些是一些可以帮助你理解一切的东西......使用 iloc

在 iloc 中,[初始行:结束行,初始列:结束列]

情况 1:如果您只想要最后一列 --- df.iloc[:,-1] & df.iloc[:,-1:] 这意味着您只需要最后一列...

情况 2:如果您想要除最后一列之外的所有列和所有行 ---df.iloc[:,:-1] 这意味着您想要除最后一列之外的所有列和所有行...

情况 3:如果您只需要最后一行 ---df.iloc[-1:,:] & df.iloc[-1,:] 这意味着您只需要最后一行...

情况 4:如果您想要除最后一行之外的所有列和所有行 ---df.iloc[:-1,:] 这意味着您想要除最后一列之外的所有列和所有行...

情况 5:如果您想要除最后一行和最后一列之外的所有列和所有行 ---df.iloc[:-1,:-1] 这意味着您想要除最后一列和最后一行之外的所有列和所有行...


jez*_*jez 16

与你原来的尝试有点相似,但更多Pythonic,是使用Python的标准负索引约定从末尾向后计数:

df[df.columns[-1]]
Run Code Online (Sandbox Code Playgroud)


小智 6

问题是:如何选择数据框的最后一列?Appart @piRSquared,没有人回答这个问题。

获取最后一列数据框的最简单方法是:

df.iloc[ :, -1:]
Run Code Online (Sandbox Code Playgroud)


Ami*_*rma 6

只是添加到@Anshul Singh Suryan 的回答中:

当我们拆分数据框以获取最后一列时:

如果我们像这样拆分:

y = df.iloc[:,-1:] - y 仍然是一个 dataframe

但是,如果我们像

y = df.iloc[:,-1] - y成为Series.

这是我在两种方法中发现的显着差异。如果您不关心结果类型,则可以使用两者之一。否则,您需要注意上述发现。

这适用于您要提取的任意数量的行,而不仅仅是最后一行。例如,如果您想要n数据帧的最后行数,其中 n 是小于或等于数据帧中列数的任何整数,那么您可以轻松执行以下操作:

y = df.iloc[:,n:]
Run Code Online (Sandbox Code Playgroud)

替换n为您想要的列数。行也是如此。