根据列名列表过滤熊猫数据框

时间:2020-08-12 00:03:15

标签: python pandas wildcard

我有一个pandas数据框,可能有1000列。但是,我不需要那么多的列>仅当它们匹配/开始/包含特定字符串时,我才需要列。

所以可以说我有一个数据框列,例如 df.columns =

  HYTY, ABNH, CDKL, GHY@UIKI,  BYUJI@#hy  BYUJI@tt  BBNNII#5  FGATAY@J ....

我想选择名称仅像HYTY,CDKL,BYUJI *和BBNNI *的列

所以我想做的是创建一个正则表达式列表,例如:

  import re 

  relst = ['HYTY', 'CDKL*', 'BYUJI*', 'BBNI*']


  my_w_lst = [re.escape(s) for s in relst]

  mask_pattrn = '|'.join(my_w_lst)

然后,我创建逻辑向量,以给出一个TRUE / FALSE列表来说明该字符串是否存在。但是,不了解如何从中获取仅那些真正选定列的数据框。

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:2)

使用已经拥有的东西,可以通过遮罩进行过滤,例如:

df.filter(regex=mask_pattrn)

答案 1 :(得分:1)

我们可以做startswith

relst = ['CDKL', 'BYUJI', 'BBNI']

subdf = df.loc[:,df.columns.str.startswith(tuple(relst))|df.columns.isin(['HYTY'])]

答案 2 :(得分:1)

使用re.findall()。它将为您提供要传递给df[mylist]

的列的列表