删除pandas数据框中的列

4

col_exclusions = ['numerator','Numerator' 'Denominator', "denominator"]

数据框

id prim_numerator sec_Numerator tern_Numerator tern_Denominator final_denominator Result

1       12                23           45          54                      56         Fail

最终输出是id和结果。

1
这个回答解决了你的问题吗?从 Pandas DataFrame 中删除列 - Sociopath
可能重复:https://dev59.com/EFUK5IYBdhLWcg3w2zGR - 404pio
@AkshayNevrekar 这不是我的问题。 - rakesh
我在列名中使用了“numerator”等单词,因此如果“numerator”出现在任何位置,就意味着我必须将其删除。 - rakesh
3个回答

5

使用正则表达式

import re

pat = re.compile('|'.join(col_exclusions),flags=re.IGNORECASE)

final_cols = [c for c in df.columns if not re.search(pat,c)]

#out:

['id', 'Result']

print(df[final_cols])

   id Result
0   1   Fail

如果你想要删除

df = df.drop([c for c in df.columns if re.search(pat,c)],axis=1)

或者采用纯pandas方法,感谢@Anky_91的贡献。
df.loc[:,~df.columns.str.contains('|'.join(col_exclusions),case=False)]

0

您可以明确地使用del删除包含输入列表中后缀的列:

for column in df.columns:
    if any([column.endswith(suffix) for suffix in col_exclusions]):
        del df[column]

0

您还可以使用以下方法,其中列名被拆分,然后与col_exclusions匹配

df.drop(columns=[i for i in df.columns if i.split("_")[-1] in col_exclusions], inplace=True)
print(df.head())

FGITW的经典案例,smh :-( - Abercrombie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接