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

时间:2016-10-20 03:11:11

标签: python pandas

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

df[df.columns[len(df.columns)-1]]

对我来说,这似乎是不喜欢的,而且是非pythonic(和慢?)。

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

7 个答案:

答案 0 :(得分:77)

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

df.iloc[:,-1]

答案 1 :(得分:14)

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

df[df.columns[-1]]

答案 2 :(得分:3)

只需添加到@Anshul Singh Suryan的答案中即可:

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

如果我们像这样分裂:

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

但是,如果我们像这样分裂

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

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

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

y = df.iloc[:,n:]

用所需的列数替换n。行也是如此。

答案 3 :(得分:2)

df.T.iloc[-1]
df.T.tail(1)
pd.Series(df.values[:, -1], name=df.columns[-1])

答案 4 :(得分:2)

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

使用最后一列获取数据帧的最简单方法是:

dfs = pd.read_excel('Movement of BSE RIK.xlsx',
                   header=0,
                   dtype={'Open Price (Rs.)':np.float64}, 
                   sheetname=None,
                   index_col='Security Name')
print (dfs)

print (dfs['D-0'])

               a  b  Open Price (Rs.)
Security Name                        
1              r  u               3.0
4              t  j               5.0

答案 5 :(得分:1)

这是另一种方法。我想可能会更一般:

df.ix[:,-1]

答案 6 :(得分:0)

这些东西可以帮助您了解所有...使用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] 这意味着您需要除最后一列和最后一行以外的所有列和所有行...