代码之家  ›  专栏  ›  技术社区  ›  rahs

在数据帧中选择多组列[重复]

  •  0
  • rahs  · 技术社区  · 7 年前

    这个问题已经有了答案:

    有没有一种方法可以从一个数据框中选择多组列,而不单独命名这些列?例如,第1列到第4列、第7列到第9列和第22列到第29列的所有行。

    我试过

    df.loc[:, [1:5, 7:10, 22:30] ]
    

    df.loc[:, [[1:5], [7:10], [22:30]] ]
    

    没有成功

    2 回复  |  直到 7 年前
        1
  •  1
  •   Scott Boston    7 年前

    试试这个:

    df = pd.DataFrame(np.random.random((10,25)))
    
    df.iloc[:, np.r_[1:5, 10:15, 24]]
    

    输出:

             1         2         3         4         10        11        12  \
    0  0.919851  0.852250  0.296771  0.562167  0.926956  0.425690  0.347112   
    1  0.053743  0.709286  0.866658  0.873554  0.588566  0.349387  0.582820   
    2  0.910201  0.918976  0.170105  0.967791  0.839613  0.200846  0.680498   
    3  0.606104  0.932580  0.857744  0.876963  0.199340  0.303397  0.103754   
    4  0.310878  0.386755  0.792151  0.664561  0.295020  0.980937  0.161358   
    5  0.808738  0.473452  0.190060  0.882827  0.778226  0.054262  0.052157   
    6  0.381418  0.216191  0.034603  0.314118  0.806126  0.535102  0.903150   
    7  0.531248  0.411528  0.644153  0.994051  0.727920  0.587441  0.679924   
    8  0.585064  0.352427  0.940689  0.684018  0.544400  0.765451  0.018906   
    9  0.075305  0.526637  0.911727  0.945098  0.105858  0.299441  0.862912   
    
             13        14        24  
    0  0.084237  0.317501  0.906934  
    1  0.949726  0.744821  0.149304  
    2  0.529243  0.492711  0.933917  
    3  0.723055  0.898373  0.642724  
    4  0.929206  0.540533  0.467883  
    5  0.825112  0.357224  0.235781  
    6  0.258703  0.114978  0.506079  
    7  0.758599  0.440214  0.863970  
    8  0.936511  0.117202  0.089875  
    9  0.968953  0.509748  0.584470  
    
        2
  •  0
  •   Celius Stingher    7 年前

    你需要使用 iloc :

    mydict = [{'a': 1, 'b': 2, 'c': 3, 'd': 4},
    {'a': 100, 'b': 200, 'c': 300, 'd': 400},
    {'a': 1000, 'b': 2000, 'c': 3000, 'd': 4000 }]
    df = pd.DataFrame(mydict)
    

    生成数据帧,然后如果要制定单个数组选择条件:

    print(df.iloc[:2]):
    

    输出:

          a     b     c
    0     1     2     3
    1   100   200   300
    2  1000  2000  3000
    

    编辑:是,如果需要多个选择条件,可以使用 np.r_ 这在处理多个数组时很有用,并且需要按行合并。

    df.iloc[:,np.r_[1:5, 10:15, 22:30]]