python:如果匹配多个子字符串,如何按名称选择数据框列

时间:2017-04-20 15:23:22

标签: python regex dataframe

这与另一个post

相关但不同
data = {'spike-2': [1,2,3], 'hey spke': [4,5,6], 'spiked-in': [7,8,9], 'no': [10,11,12]}
df = pd.DataFrame(data)

如果列名匹配多个子字符串条件,我想按名称选择列。

我尝试使用AND运算符即&

spike_cols = [col for col in df.columns if ('spike') & ('hey') in col]

这样我就可以精确地获得一列'嘿穗' 我也用过

dfnew = df.filter(regex='spike'&'hey')

收到错误

  

TypeError:&:'str'和'str'不支持的操作数类型

1 个答案:

答案 0 :(得分:1)

这是一个没有 regex 的方法,只需使用in来检查子字符串条件:

df[[col for col in df.columns if 'hey' in col and 'spike' in col]]

enter image description here

或者,如果您想使用正则表达式,您可以执行以下操作:

df.filter(regex='(?=.*hey)(?=.*spike)')

See this answer

enter image description here