Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 正则表达式选择包含除一个字符串以外的字符串的列_Python_Regex_Pandas - Fatal编程技术网

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

Python 正则表达式选择包含除一个字符串以外的字符串的列,python,regex,pandas,Python,Regex,Pandas,我有一个熊猫数据框,如下所示。我想选择所有以_cd或_ind结尾的列,除了列final _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

我有一个熊猫数据框,如下所示。我想选择所有以_cd或_ind结尾的列,除了列final _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
您可以将过滤器与正则表达式一起使用,如下所示:

^?!final将断言列名不以final开头,这要感谢否定的前瞻性?!。。。; .*u cd | u ind$匹配以_cd或_ind结尾的列名; 您可以将过滤器与正则表达式一起使用,如下所示:

^?!final将断言列名不以final开头,这要感谢否定的前瞻性?!。。。; .*u cd | u ind$匹配以_cd或_ind结尾的列名;
不使用负前瞻正则表达式的另一个解决方案:


不使用负前瞻正则表达式的另一个解决方案:

df.filter(regex='^(?!final).*(_cd|_ind)$')

# var2_ind  var3_cd
#0      a4       10
#1      a3        5
#2      b1        7
In [24]: df[df.columns[df.columns.str.contains('(?:_cd|_ind)$')].drop('final_ind')]
Out[24]:
  var2_ind  var3_cd
0       a4       10
1       a3        5
2       b1        7