python - 如何根据 Python Pandas 中 DataFrame 中其他 2 列中的值删除一列中的重复项?

标签 python pandas duplicates drop-duplicates

我在 Python Pandas 中有 DataFrame,如下所示:

数据类型:

  • ID - 整数

  • 类型 - 对象

  • TG_A - 整数

  • TG_B - 整数

    <表类=“s-表”> <标题> ID 类型 TG_A TG_B <正文> 111 一个 1 0 111 B 1 0 222 B 1 0 222 一个 1 0 333 B 0 1 333 一个 0 1

我需要删除上面 DataFrame 中的重复项,以便:

  • 如果 DF 中的 ID 值重复 -> 删除 TYPE = B 且 TG_A = 1 或 TYPE = A 且 TG_B = 1 的行

因此,我需要如下所示的内容:

ID  | TYPE | TG_A | TG_B
----|------|------|-----
111 | A    | 1    | 0
222 | A    | 1    | 0
333 | B    | 0    | 1

如何在 Python Pandas 中做到这一点?

最佳答案

您可以使用两个 bool 掩码和groupby.idxmax来获取第一个不匹配的值:

m1 = df['TYPE'].eq('B') & df['TG_A'].eq(1)
m2 = df['TYPE'].eq('A') & df['TG_B'].eq(1)

out = df.loc[(~(m1|m2)).groupby(df['ID']).idxmax()]

输出:

    ID TYPE  TG_A  TG_B
0  111    A     1     0
3  222    A     1     0
4  333    B     0     1

关于python - 如何根据 Python Pandas 中 DataFrame 中其他 2 列中的值删除一列中的重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74773052/

相关文章:

python - 将新行添加到 pyspark Dataframe

python - 为什么我在 python 中收不到日志信息消息?

python - sqlite3.操作错误: table test has no column named

sql - 返回所有重复行

python - 用于删除跨列具有相同内容的连续重复行的数据框

python - 如何使用 python bs4 抓取包含分页下一个标签的股票数据?

python - 什么时候最好在 Python 中使用类?

python - 尝试用python解析文本文件进行数据分析

python - 安全地将 float 向下转换为尽可能小的整数类型

php - 插入前检查重复项