Python 如果在同一标签上包含两个不同的文本,如何删除列?

Python 如果在同一标签上包含两个不同的文本,如何删除列?,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据框,其中包含一些要删除的列。我已经知道如果我发现某些指定文本,如何删除列,如下所示: df.drop(columns=[col for col in df.columns if 'text.'in str(col)],inplace=True) 我还想删除所有包含不同模式的列,如下所示: “text.Corolary.sub.ramdon.sta”,“text.paint.ss1b.docto.not.sta” 我想删除所有包含“文本”的列。,但也要删除“.sta”。如何在同一命令

我有一个数据框,其中包含一些要删除的列。我已经知道如果我发现某些指定文本,如何删除列,如下所示:

df.drop(columns=[col for col in df.columns if 'text.'in str(col)],inplace=True)
我还想删除所有包含不同模式的列,如下所示:

text.Corolary.sub.ramdon.sta”,“text.paint.ss1b.docto.not.sta

我想删除所有包含“文本”的列。,但也要删除“.sta”。如何在同一命令中独立于文本的其余部分进行组合?

使用with and MASKES chain by
&
对于按位
,最后通过反向掩码进行过滤by
~

m1 = df.columns.str.contains('text')
m2 = df.columns.str.contains('\.sta')
#alternative
#m2 = df.columns.str.contains('.sta', regex=False)

mask = m1 & m2
df = df.loc[:, ~mask]

我认为有比您现有的更好的方法来删除包含指定文本的列。如果您提供了一个带有预期输出的示例数据帧,这将非常有用。请将此作为指南: