删除以.开头的列

hda*_*tas 8 python numpy dataframe pandas

我有一个包含多列的数据框,例如:

        Prod_A       Prod_B        Prod_C        State         Region
1          1           0             1             1              1
Run Code Online (Sandbox Code Playgroud)

我想删除所有以Prod_开头的列,(我不能选择或按名称删除,因为数据框有200个变量)是否可以这样做?

谢谢

jez*_*ael 14

使用startswith的面具,然后删除列与locboolean indexing:

df = df.loc[:, ~df.columns.str.startswith('Prod')]
print (df)
   State  Region
1      1       1
Run Code Online (Sandbox Code Playgroud)


DYZ*_*DYZ 7

首先,选择要删除的所有列:

unwanted = df.columns[df.columns.str.startswith('Prod_')]
Run Code Online (Sandbox Code Playgroud)

,全部删除:

df.drop(unwanted, axis=1, inplace=True)
Run Code Online (Sandbox Code Playgroud)


Max*_*axU 5

我们也可以使用负正则表达式:

In [269]: df.filter(regex=r'^(?!Prod_).*$')
Out[269]:
   State  Region
1      1       1
Run Code Online (Sandbox Code Playgroud)