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

Python Pandas中DataFrame.pop与DataFrame.drop方法有何区别

Pandas DataFrame.pop() 与 DataFrame.drop() 差异说明

你的核心判断是正确的:dataframe.pop 移除指定列时会返回被移除的列内容,dataframe.drop 不会单独返回被移除的列,二者的具体行为差异可以拆解为以下几点:

  • df.pop() 的行为逻辑
    • 仅支持传入单个列名作为参数,调用后会直接在原DataFrame上原地删除目标列,不需要额外设置原地修改参数
    • 返回值就是被删除的整列(Series类型),可以直接赋值给变量留存使用
    • 如果传入的列名不存在,会直接抛出KeyError
      示例代码:
    import pandas as pd
    df = pd.DataFrame({"A": [1,2,3], "B": [4,5,6], "C": [7,8,9]})
    # 弹出B列
    removed_col = df.pop("B")
    print(removed_col)
    # 0    4
    # 1    5
    # 2    6
    # Name: B, dtype: int64
    
    print(df) # 原DF已经删除B列
    #    A  C
    # 0  1  7
    # 1  2  8
    # 2  3  9
    
  • df.drop() 的行为逻辑
    • 灵活性更高,支持同时删除多列、多行,通过axis参数指定删除维度(axis=1为删列,axis=0为删行)
    • 默认不会修改原DataFrame,会返回一个完成删除操作的新DataFrame;如果需要原地修改原数据,需要显式传入inplace=True,此时方法返回值为None
    • 不会单独返回被删除的内容,仅返回删除后剩余的完整DataFrame(非原地模式下);还可以通过errors参数配置当待删除标签不存在时的处理逻辑,比如设置errors='ignore'就不会抛出KeyError
      示例代码:
    df = pd.DataFrame({"A": [1,2,3], "B": [4,5,6], "C": [7,8,9]})
    # 默认非原地模式:返回删除B、C列后的新DF,原DF不受影响
    df_after_drop = df.drop(columns=["B", "C"])
    print(df_after_drop)
    #    A
    # 0  1
    # 1  2
    # 2  3
    
    # 原地删除模式:直接修改原DF,无有效返回值
    df.drop(columns=["B"], inplace=True)
    print(df) # 原DF已删除B列
    #    A  C
    # 0  1  7
    # 1  2  8
    # 2  3  9
    

简单总结使用场景:如果删除列时需要复用被删掉的列内容,直接用pop()写法最简洁;如果需要批量删除行列、或者不想改动原始数据做链式处理,用drop()更合适。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 13:09:26