【问题标题】:Column selection with iloc, with both individual indices and ranges使用 iloc 进行列选择,具有单独的索引和范围
【发布时间】:2019-07-16 12:24:19
【问题描述】:

我想知道为什么这行返回“无效语法”,以及一次选择隔离列和范围的正确语法是什么:

X = f1.iloc[:, [2,5,[10:19]]].values

顺便说一句:

X = f1.iloc[:, [2,5,10:19]].values

谢谢。

【问题讨论】:

    标签: python pandas dataframe multi-index


    【解决方案1】:

    第二个是正确的语法,只需要numpy.r_ 来连接索引:

    np.random.seed(2019)
    
    f1 = pd.DataFrame(np.random.randint(10, size=(5, 25))).add_prefix('a')
    print(f1)
       a0  a1  a2  a3  a4  a5  ...  a19  a20  a21  a22  a23  a24
    0   8   2   5   8   6   8  ...    0    1    6    0    2    6
    1   6   3   1   3   5   0  ...    4    8    1    0    6    1
    2   8   2   3   0   9   2  ...    7    1    0    7    4    4
    3   7   0   8   9   0   7  ...    3    0    8    6    0    2
    4   7   3   2   4   9   9  ...    0    8    8    1    4    9
    
    X = f1.iloc[:, np.r_[2,5,10:19]].values
    print(X)
    [[5 8 5 3 0 2 5 7 8 5 4]
     [1 0 2 9 8 3 7 7 7 0 3]
     [3 2 6 2 1 1 1 1 8 6 2]
     [8 7 7 8 0 5 7 4 1 1 4]
     [2 9 7 2 9 3 8 5 2 5 5]]
    

    也可以先将值转换为numpy数组,然后iloc就没有必要了:

    X = f1.values[:, np.r_[2,5,10:19]]
    print(X)
    [[5 8 5 3 0 2 5 7 8 5 4]
     [1 0 2 9 8 3 7 7 7 0 3]
     [3 2 6 2 1 1 1 1 8 6 2]
     [8 7 7 8 0 5 7 4 1 1 4]
     [2 9 7 2 9 3 8 5 2 5 5]]
    

    【讨论】:

      猜你喜欢
      • 2020-12-19
      • 1970-01-01
      • 2017-12-01
      • 1970-01-01
      • 2021-10-23
      • 2014-07-26
      • 2021-10-06
      • 1970-01-01
      • 2019-09-24
      相关资源
      最近更新 更多