【问题标题】:How to select the last column of dataframe如何选择数据框的最后一列
【发布时间】:2016-10-20 03:11:10
【问题描述】:

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

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

在我看来,这看起来很笨拙,而且不像 Python 那样(而且很慢?)。

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

【问题讨论】:

    标签: python pandas


    【解决方案1】:

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

    df.iloc[:,-1:]
    

    【讨论】:

    • 我尝试这样做并收到错误提示“索引器过多”
    • @user287474 如果您在 Series 上操作,就会发生这种情况 - 请确保您使用的是 DataFrame
    【解决方案2】:

    有点类似于您最初的尝试,但更 Pythonic,是使用 Python 的标准负索引约定从末尾倒数:

    df[df.columns[-1]]
    

    【讨论】:

    • 这行得通吗? df[df.columns[-1] >= 10] 它给了我“在 'str' 和 'int' 的实例之间不受支持”
    • @Mike_Leigh 你的比较不应该在括号内进行
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      只是为了补充@Anshul Singh Suryan 的回答:

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

      如果我们像这样拆分:

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

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

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

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

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

      y = df.iloc[:,n:]
      

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

      【讨论】:

        【解决方案5】:

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

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

        df.iloc[ :, -1:]
        

        【讨论】:

          【解决方案6】:
          df.T.iloc[-1]
          

          df.T.tail(1)
          

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

          【讨论】:

          • 与直接调用 iloc 相比,从 numpy 值提取中显式构建系列没有任何价值
          • @Boud,有很多方法可以做到这一点。我只是想甩掉一堆。诚然,第三个选项是最弱的。
          【解决方案7】:

          这是另一种方法。我想也许更笼统一些:

          df.ix[:,-1]
          

          【讨论】:

          • 在这种情况下,不建议使用您的答案,因为该问题明确要求基于索引位置的 last 列。 ix 混合标签和索引位置访问器。请参阅here 了解更多信息。
          • 确实,另外,ix 现在已被弃用。
          猜你喜欢
          • 1970-01-01
          • 2015-03-17
          • 2021-11-30
          • 2016-01-07
          • 2022-01-15
          • 2021-07-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多