我已经做了一些寻找这个问题的答案,但我能弄清楚的是:
df[df.columns[len(df.columns)-1]]
对我来说,这似乎是不喜欢的,而且是非pythonic(和慢?)。
在不指定列名称的情况下,为pandas数据框中的最后一列选择数据的最简单方法是什么?
答案 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]
这意味着您需要除最后一列和最后一行以外的所有列和所有行...