You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas按条件将行移至新DataFrame并删除原行?

Pandas高效实现行筛选迁移与删除

直接用Pandas的布尔索引就能搞定,完全不用低效的for循环,步骤如下:

1. 准备示例数据

先拿简单例子演示,假设原DataFrame结构如下:

import pandas as pd

df = pd.DataFrame({
    'A': [1, 2, 3, 4, 5],
    'B': ['x', 'y', 'x', 'z', 'y']
})

2. 筛选满足条件的行到新DataFrame

比如要把B列等于'x'的行移到新表,直接用布尔索引筛选,记得加.copy()避免视图引用导致的后续数据关联问题:

# 提取满足条件的行到新DataFrame
new_df = df[df['B'] == 'x'].copy()

3. 从原DataFrame删除目标行

有两种常用实现方式:

  • 方式一:直接保留不满足条件的行(最简洁)
# 原DataFrame仅保留不符合条件的行
df = df[df['B'] != 'x']
  • 方式二:通过索引删除(适合需要复用索引的场景)
# 获取满足条件的行索引
target_idx = df[df['B'] == 'x'].index
# 原地删除原表中的对应行
df.drop(target_idx, inplace=True)

关键优势

布尔索引是Pandas的矢量化操作,底层基于C实现,处理大数据量时速度比for循环快几个数量级,代码也更简洁易读。

如果条件复杂,可以用&(逻辑与)、|(逻辑或)组合筛选,比如要提取A>2且B='y'的行:

condition = (df['A'] > 2) & (df['B'] == 'y')
new_df = df[condition].copy()
df = df[~condition]  # ~表示对布尔条件取反

内容的提问来源于stack exchange,提问作者Matt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 06:20:46