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

如何用含df.drop的函数移除DataFrame指定列含目标值的多行?

问题解决:移除DataFrame指定列中包含目标值列表的行

错误原因分析

你遇到的问题有三个核心点:

  • 调用函数时,列名要传字符串形式的'Age',而非直接写Age——Python会把Age当作变量,但你并未定义过这个变量,因此触发"Age未定义"的报错。
  • 函数里的df['column']写法错误,这里的'column'是固定字符串,会去DataFrame里找名为column的列,而非你传入的column参数对应的列,要改成df[column]。
  • 用== x无法匹配列表中的多个值,批量判断列值是否在目标列表里,得用Pandas的isin()方法。

修正后的函数

推荐直接通过布尔索引筛选保留需要的行(避免inplace=True引发的意外问题):

import pandas as pd

def rem_out(df, column, x):
    # 取反筛选出不在目标列表里的行
    df = df[~df[column].isin(x)]
    return df

如果习惯用drop方法,也可以这么写:

def rem_out(df, column, x):
    drop_indices = df[df[column].isin(x)].index
    df = df.drop(drop_indices)
    return df

正确调用方式

先定义要移除的值列表,再传入字符串格式的列名:

data = {'Name': ['Tom', 'nick', 'krish', 'jack'],
        'Age': [20, 21, 19, 18]}
sample = pd.DataFrame(data)
remove_these = [20, 21]

# 列名传字符串'Age'
result = rem_out(sample, 'Age', remove_these)
print(result)

理想输出

Name  Age
2  krish   19
3   jack   18

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 10:05:29