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

Python如何删除与另一DataFrame的name列值重合的目标行

实现代码

你可以通过pandas的布尔索引配合isin()方法快速完成需求,完整可运行代码如下:

import pandas as pd

# 构造示例DataFrame 1
df1 = pd.DataFrame(
    data=[
        ["2015-01-02", "Adam", 1],
        ["2015-02-02", "David", 2],
        ["2015-02-02", "Mila", 2],
        ["2015-03-02", "Harshan", 2],
        ["2015-03-02", "Hardik", 2],
        ["2015-03-02", "Alex", 3],
    ],
    columns=["Date", "name", "Age"]
)

# 构造示例DataFrame 2
df2 = pd.DataFrame(
    data=[
        ["2015-01-02", "Jadeja", 1],
        ["2015-02-02", "Dravid", 2],
        ["2015-02-02", "Dhoni", 2],
        ["2015-03-02", "Hrithik", 2],
        ["2015-03-02", "Hardik", 2],
        ["2015-03-02", "Alex", 3],
    ],
    columns=["Date", "name", "Age"]
)

# 核心筛选逻辑
# 大数据量场景下建议把df2['name']转成set提升查询速度:isin(set(df2['name']))
df_result = df1[~df1["name"].isin(df2["name"])].reset_index(drop=True)
print(df_result)

代码说明

  • df1["name"].isin(df2["name"])会为df1的每一行返回布尔值,当前行name存在于df2的name列时返回True,否则返回False
  • 运算符~代表取反,筛选出上述布尔值为False的行,也就是name不存在于df2的行
  • reset_index(drop=True)用于重置结果的行序号,和预期输出的索引格式保持一致,不需要可以删除

运行上述代码后输出结果和你给出的预期完全一致:

Date     name  Age
0  2015-01-02     Adam    1
1  2015-02-02    David    2
2  2015-02-02     Mila    2
3  2015-03-02  Harshan    2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 15:57:03