首页 > 编程语言 >Pandas按列条件筛选创建新DataFrame

Pandas按列条件筛选创建新DataFrame

来源:互联网 2026-07-14 08:00:05

通过布尔索引筛选DataFrame中满足列值条件的行,之后可链式调用.drop()移除条件列,从而得到结构清晰的新DataFrame。注意缺失值默认被排除,列名需严格匹配。另外,也可使用.loc直接指定保留列,更为简洁高效。

本文介绍如何使用布尔索引高效筛选DataFrame中满足特定列值条件的行,并可选地移除该条件列,生成结构清晰的新DataFrame。

按列值筛选行的核心方法

数据清洗时,按列值筛选行是常见操作。以实际场景为例:假设存在一个名为 df1 的DataFrame,其中包含一列 "purpose",需要提取所有 purpose == "house" 的记录,并存入新DataFrame df2。若希望同时移除筛选使用的列,使表结构更简洁,可链式调用 .drop() 方法完成。

核心代码为一行,简洁直观:

长期稳定更新的攒劲资源: >>>点此立即查看<<<

df2 = df1[df1["purpose"] == "house"].drop("purpose", axis=1)

代码说明

  • df1["purpose"] == "house" 生成布尔类型Series,标记每一行是否符合条件;
  • df1[...] 利用布尔索引筛选出所有符合条件的行,保留所有原始列;
  • .drop("purpose", axis=1) 沿列方向(axis=1)删除 "purpose" 列,最终 df2 仅包含其他特征字段。

注意事项

  • "purpose" 列存在缺失值(NaN),使用 == "house" 判断时,NaN 会被判定为 False(不会报错),即这些行默认被排除。如需考虑空值,可使用 df1["purpose"].str.contains("house", na=False) 或结合 isna() 单独处理。
  • 列名必须严格匹配,大小写与空格需完全一致。建议先通过 df1.columns.tolist() 确认列名。
  • 若仅需保留特定列,不一定先筛选再删列。更推荐使用 .loc 直接指定保留列,代码更清晰:
    df2 = df1.loc[df1["purpose"] == "house", ["col1", "col2", "col3"]]

该方法简洁、向量化,性能良好,适用于千万级以下数据的子集提取,是Pandas数据清洗流程中基础且关键的一环。

侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述

热游推荐

更多
湘ICP备14008430号-1 湘公网安备 43070302000280号
All Rights Reserved
本站为非盈利网站,不接受任何广告。本站所有软件,都由网友
上传,如有侵犯你的版权,请发邮件给xiayx666@163.com
抵制不良色情、反动、暴力游戏。注意自我保护,谨防受骗上当。
适度游戏益脑,沉迷游戏伤身。合理安排时间,享受健康生活。