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

数据类型:

  • ID-整型

  • 类型-对象

  • Tg_A-INT

  • TG_B-INT

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

并且我需要在上面的DataFrame中放置重复项,以便:

  • 如果我的DF中ID中的值重复-&>删除类型=B且Tg_A=1或类型=A且Tg_B=1的行

因此,我需要如下内容:

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

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

推荐答案

您可以使用两个布尔掩码和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相关问答推荐

类型错误:输入类型不支持ufuncisnan-在执行Mann-Whitney U测试时[SOLVED]

ModuleNotFound错误:没有名为flags.State的模块; flags不是包

对所有子图应用相同的轴格式

如何在Raspberry Pi上检测USB并使用Python访问它?

将9个3x3矩阵按特定顺序排列成9x9矩阵

Pandas DataFrame中行之间的差异

导入...从...混乱

连接一个rabrame和另一个1d rabrame不是问题,但当使用[...]'运算符会产生不同的结果

如何根据一列的值有条件地 Select 前N组?

解决调用嵌入式函数的XSLT中表达式的语法移位/归约冲突

OpenCV轮廓.很难找到给定图像的所需轮廓

30个非DATETIME天内的累计金额

Django.core.exceptions.SynchronousOnlyOperation您不能从异步上下文中调用它-请使用线程或SYNC_TO_ASYNC

时长超过24小时如何从Excel导入时长数据

是否需要依赖反转来确保呼叫方和被呼叫方之间的分离?

基于2级列表的Pandas 切片3级多索引

条件Python Polars cum_sum over a group,有更好的方法吗?

滑动子数组美容工作在IDE上,但不是在leetcode上

获取每行NumPy最大出现次数的所有值

对齐多个叠置多面Seborn CAT图