如何根据DataFrame第0行的取值删除对应的列
Pandas按条件删除列实现方案
核心逻辑是先通过第0行的值生成保留列的筛选条件,再对原DataFrame做列过滤即可,一行代码就能实现:
import pandas as pd # 核心代码 df = df.loc[:, df.iloc[0] != 'rejected']
代码解释
df.iloc[0]:取DataFrame第0行的全量数据,返回和列名一一对应的Series对象df.iloc[0] != 'rejected':生成布尔值掩码,值为True对应的列就是第0行不等于rejected、需要保留的列df.loc[:, 掩码]:保留所有行,仅筛选掩码为True的列
可选优化(适配异常情况)
如果怕第0行的值存在前后空格、大小写不一致的问题(比如出现Rejected、rejected这类异常值),可以对值做标准化处理后再判断:
df = df.loc[:, df.iloc[0].astype(str).str.strip().str.lower() != 'rejected']
分步写法(适合初学者理解逻辑)
# 1. 取第0行全量数据 row0_data = df.iloc[0] # 2. 筛选出要保留的列名 keep_columns = row0_data[row0_data != 'rejected'].index # 3. 对原DataFrame做列过滤 df = df[keep_columns]
内容的提问来源于stack exchange,提问作者sibillaromana
相关产品推荐
相关产品推荐

