【问题标题】:Pass column index and range simultaneously in Pandas iloc在 Pandas iloc 中同时传递列索引和范围
【发布时间】:2017-12-01 08:39:37
【问题描述】:

假设我有一个包含 100 列的数据框。我只想为所有行选择 0,1 和 51-100 列。到目前为止,我正在尝试这样的事情:

df.iloc[:,[0,1,range(51,101)]]

但它正在抛出错误:

“用序列设置数组元素”

虽然如果我只传递范围而不是列索引,它就可以工作。

我也试过了:

df.iloc[:,[0,1,51:102)]]

显示无效语法。

有人可以在这里指出错误吗?另请建议实现功能的替代方法。

【问题讨论】:

    标签: python python-3.x pandas dataframe


    【解决方案1】:

    我认为您需要 numpy.r_ 来获取连接索引:

    df.iloc[:,np.r_[0,1,51:102]]
    

    示例:

    df = pd.DataFrame([[0] * 10], columns=list('abcdefghij'))
    print (df)
       a  b  c  d  e  f  g  h  i  j
    0  0  0  0  0  0  0  0  0  0  0
    
    print (df.iloc[:,np.r_[0,1,5:8]])
       a  b  f  g  h
    0  0  0  0  0  0
    

    【讨论】:

      【解决方案2】:

      没有numpy.r_你也可以这样做:

      new_df = df.iloc[:, [0, 1] + list(range(51,101))]
      

      【讨论】:

        猜你喜欢
        • 2020-12-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-21
        • 2019-09-24
        • 2019-07-16
        • 2021-08-25
        • 2018-02-07
        相关资源
        最近更新 更多