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