使用 Columns.Str.Startswith 删除多列

Dropping Multiple Columns using Columns.Str.Startswith

我有一个包含 204 行 x 507 列的数据集。据我了解,例如,为了删除包含单词 'Dog' 的列,您可以使用:

df.loc[:,~df.columns.str.startswith('Dog')]

我还了解到您可以使用多个条件删除列,例如 'Dog' 和 'Cat',方法是使用以下 'str.contains' 代码:

df.loc[:,~df.columns.str.contains('Dog|Cat')]

但是,当您应用“|” (或)函数 "columns.str.startswith" 如下所示它不起作用并且输出给出 204 行 x 0 列

df.loc[:,~df.columns.str.startswith('Dog|Cat')]

204 rows × 0 columns

这是为什么?有没有一种方法可以使用 "df.columns.str.startswith" 函数删除使用多个条件的列?

如果想要 Series.str.startswith 中的多个值,请使用 tuple,例如:

df.loc[:,~df.columns.str.startswith(('Dog', 'Cat'))]

对于几个字符串,我更喜欢正则表达式方法:

 df.loc[:, ~df.columns.str.match('^(Dog|Cat).*')]