Iris
Iris

Reputation: 53

Select python data-frame columns with similar names

I have a data frame named df1 like this:

as_id   TCGA_AF_2687    TCGA_AF_2689_Norm   TCGA_AF_2690    TCGA_AF_2691_Norm   
   31      1                  5                  9                 2

I wanna select all the columns which end with "Norm", I have tried the code down below

import os;
print os.getcwd()
os.chdir('E:/task')
import pandas as pd
df1 = pd.read_table('haha.txt')
Norms = []
for s in df1.columns:
    if s.endswith('Norm'):
        Norms.append(s)
print Norms

but I only get a list of names. what can I do to select all the columns including their values rather than just the columns names? I know it may be a silly question, but I am a new beginner, really need someone to help, thank you so much for your kindness and your time.

Upvotes: 1

Views: 370

Answers (2)

rnso
rnso

Reputation: 24535

One can also use the filter higher-order function:

newdf = df[list(filter(lambda x: x.endswith("Norm"),df.columns))]
print(newdf)

Output:

   TCGA_AF_2689_Norm  TCGA_AF_2691_Norm
0                  5                  2

Upvotes: 0

DeepSpace
DeepSpace

Reputation: 81594

df1[Norms] will get the actual columns from df1.

As a matter of fact the whole code can be simplified to

import os
import pandas as pd

os.chdir('E:/task')
df1 = pd.read_table('haha.txt')
norm_df = df1[[column for column in df1.columns if column.endswith('Norm')]]

Upvotes: 2

Related Questions