我已经做了一些寻找该问题答案的搜索,但是我能弄清楚的是:
df[df.columns[len(df.columns)-1]]
在我看来,这似乎很古怪,又不合Python(并且很慢?)。
在不指定列名的情况下,为pandas数据框中的最后一列选择数据的最简单方法是什么?
Answers:
这些都是可以帮助您理解一切的几件事...使用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]
这意味着您希望除最后一列和最后一行以外的所有列和所有行...
只是添加到@Anshul Singh Suryan的答案中:
当我们拆分数据框以获取最后一列时:
如果我们像这样分裂:
y = df.iloc[:,-1:] - y
仍然是一个 dataframe
但是,如果我们像
y = df.iloc[:,-1] - y
成为一个Series
。
这是我在两种方法中发现的显着差异。如果您不关心结果类型,则可以使用两者之一。否则,您需要照顾以上发现。
这适用于您要提取的任意数量的行,而不仅仅是最后一行。例如,如果您想要n
数据帧的最后行数,其中n是小于或等于数据帧中存在的列数的任何整数,那么您可以轻松地执行以下操作:
y = df.iloc[:,n:]
替换n
为所需的列数。行也是如此。
df.T.iloc[-1]
df.T.tail(1)
pd.Series(df.values[:, -1], name=df.columns[-1])