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

问题描述 投票:1回答:2

我有一个名为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

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

python python-2.7 pandas subset
2个回答
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')]]

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
© www.soinside.com 2019 - 2024. All rights reserved.