Skip to main content
 首页 » 编程设计

python之正则表达式选择包含除一个以外的字符串的列

2025年05月04日26JeffreyZhao

我有一个 pandas DataFrame,如下所示。我想选择除“final_ind”列之外的所有以“_cd”或“_ind”结尾的列。我怎样才能做到这一点?

df = pd.DataFrame({ 
  'var1': [20, 30.0, 40], 
  'var2_ind': ["a4", "a3", "b1"], 
  'var3_cd': [10, 5, 7], 
  'final_ind': [1, 0, 1], 
}) 

这是我尝试过的:

df.ix[:, df.columns.str.contains('_cd|_ind')] #Gets all columns except var1 
df.ix[:, df.columns.str.contains('_cd|_ind[^final_ind]')] #Gets only var3_cd 

请您参考如下方法:

您可以像这样将 filter 与 regex 一起使用:

df.filter(regex='^(?!final).*(_cd|_ind)$') 
 
# var2_ind  var3_cd 
#0      a4       10 
#1      a3        5 
#2      b1        7 

  • ^(?!final) 将断言列名称不以 final 开头,这要归功于负面的前瞻性 (?!.. .);
  • .*(_cd|_ind)$ 匹配以 _cd 或 _ind 结尾的列名;