通过布尔索引筛选DataFrame中满足列值条件的行,之后可链式调用.drop()移除条件列,从而得到结构清晰的新DataFrame。注意缺失值默认被排除,列名需严格匹配。另外,也可使用.loc直接指定保留列,更为简洁高效。
数据清洗时,按列值筛选行是常见操作。以实际场景为例:假设存在一个名为 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数据清洗流程中基础且关键的一环。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述