选择名称相似的python数据框列

时间:2018-01-01 14:18:02

标签: python python-2.7 pandas subset

我有一个名为df1的数据框,如下所示:

as_id   TCGA_AF_2687    TCGA_AF_2689_Norm   TCGA_AF_2690    TCGA_AF_2691_Norm   
   31      1                  5                  9                 2

我想选择以“Norm”结尾的所有列,我已尝试下面的代码

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

但我只得到一份名单。我该怎么做才能选择所有列,包括它们的值,而不仅仅是列名?我知道这可能是一个愚蠢的问题,但我是一个新手,真的需要有人帮助,非常感谢你的善意和时间。

2 个答案:

答案 0 :(得分:3)

df1[Norms]将从df1获取实际列。

事实上,整个代码可以简化为

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')]]

答案 1 :(得分:0)

还可以使用filter高阶函数:

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

输出:

   TCGA_AF_2689_Norm  TCGA_AF_2691_Norm
0                  5                  2