如何根据条件删除列

Din*_*ius 1 python pandas

我想删除以“ TYPE”字样开头且不包含_1

df =

TYPE_1    TYPE_2    TYPE_3    COL1
aaa       asb       bbb       123
Run Code Online (Sandbox Code Playgroud)

结果应为:

df =

    TYPE_1    COL1
    aaa       123
Run Code Online (Sandbox Code Playgroud)

目前,我正在手动删除这些列,但是,如果列数很大,此方法将不是很有效:

df = df.drop(["TYPE_2","TYPE_3"], axis=1)
Run Code Online (Sandbox Code Playgroud)

Ted*_*rou 6

这是第五个答案,但我想展示filter数据框方法的强大功能,该方法使用正则表达式按列名称进行过滤。这将搜索不以 TYPE 开头或其中某处包含 _1 的列。

df.filter(regex='^(?!TYPE)|_1')
Run Code Online (Sandbox Code Playgroud)


ade*_*e1e 5

可以使用列表理解。注意:axis = 1表示我们指的是该列,inplace=True也可以根据pandas.DataFrame.drop文档使用。

droplist = [i for i in df.columns if i.startswith('TYPE') and '_1' not in i]
df1.drop(droplist,axis=1,inplace=True)
Run Code Online (Sandbox Code Playgroud)