How to select range of columns in a dataframe based on their name and not their indexes?

前端 未结 5 1567
梦谈多话
梦谈多话 2020-12-21 09:50

In a pandas dataframe created like this:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randint(10, size=(6, 6)),
                  colu         


        
5条回答
  •  粉色の甜心
    2020-12-21 10:35

    It looks like you can accomplish this with a subset:

    > df <- data.frame(c1=1:6, c2=2:7, c3=3:8, c4=4:9, c5=5:10, c6=6:11)
    > rownames(df) <- c('r1', 'r2', 'r3', 'r4', 'r5', 'r6')
    > subset(df, select=c1:c4)
       c1 c2 c3 c4
    r1  1  2  3  4
    r2  2  3  4  5
    r3  3  4  5  6
    r4  4  5  6  7
    r5  5  6  7  8
    r6  6  7  8  9
    > subset(df, select=c1:c2)
       c1 c2
    r1  1  2
    r2  2  3
    r3  3  4
    r4  4  5
    r5  5  6
    r6  6  7
    

    If you want to subset by row name range, this hack would do:

    > gRI <- function(df, rName) {which(match(rNames, rName) == 1)}
    > df[gRI(df,"r2"):gRI(df,"r4"),]
       c1 c2 c3 c4 c5 c6
    r2  2  3  4  5  6  7
    r3  3  4  5  6  7  8
    r4  4  5  6  7  8  9
    

提交回复
热议问题