在Pandas中按名称标识多个列

时间:2014-04-11 14:22:07

标签: python pandas

有没有办法使用文本匹配或正则表达式选择列的子集?

在R中它会是这样的:

attach(iris) #Load the 'Stairway to Heaven' of R's built-in data sets
iris[grep(names(iris),pattern="Length")] #Prints only columns containing the word "Length"

2 个答案:

答案 0 :(得分:5)

您可以使用filter方法(使用axis=1过滤列名称)。这个功能有不同的可能性:

  • 相当于if 'Length' in col

    df.filter(like='Length', axis=1)
    
  • 使用正则表达式(但是,它使用的是re.search而不是re.match,因此您可以调整正则表达式):

    df.filter(regex=r'\.Length$', axis=1)
    

答案 1 :(得分:0)

使用Python的in语句,它可以这样工作:

#Assuming iris is already loaded as a df called 'iris' and has a proper header
iris = iris[[col for col in iris.columns if 'Length' in col]]
print iris.head()

或者,使用正则表达式

import re
iris = iris[[col for col in iris.columns if re.match(r'\.Length$',col)]]
print iris.head()

第一个会跑得更快,但第二个会更准确。