首页 > 解决方案 > Python/Pandas:一步删除包含两个字符串之一的列*不*?

问题描述

我有一个包含几列的数据框('df'),并且只想保留这些列的列标题以前缀'x1'或'x4'开头。也就是说,我想“删除”除列标题以“x1”或“x4”开头的列之外的所有列。

我怎样才能一步完成?

我知道,如果我只想保留那些带有x1前缀的列,我可以这样做:

df = df [df.columns.drop(list(df .filter(regex='x1')))]

..但这会导致我丢失带有x4我想保留的前缀的列。

同样,如果我只想保留那些带有x4前缀的列,我可以这样做:

df = df [df.columns.drop(list(df .filter(regex='x4')))]

..但这会导致我丢失带有x1我想保留的前缀的列。

标签: pythonpandasdataframe

解决方案


您可以将 df.loc 与列表理解一起使用:

df.loc[:, [x for x in df.columns if x.startswith(('x1', 'x4'))]]

它将显示所有开头有“x1”或“x4”的行和列。


推荐阅读