我有一个Pandas DF,它有四列(Target1、Target2、Target3、All_Target). 由于此df是由工具直接创建的,因此我想确定是否存在包含相同目标组合但顺序不同的行.更具体地说,我只想指出所有三个目标都相同的那些行.

这是我的数据帧的一个可重现的例子.

data = {'Target1':['IL17', 'TLR4', 'ERK', 'IL36','MEK'],
        'Target2':['CD80', 'ERK', 'IL17', 'STAT1','TLR4'],
        'Target13':['ERK', 'MEK', 'CD80', 'IL18','STAT3'],
        'All_targets':['IL17_CD80_ERK', 'TLR4_ERK_MEK', 'ERK_IL17_CD80', 'IL36_STAT1_IL18','MEK_TLR4_STAT3']}
df = pd.DataFrame(data)
df

预期的输出将是不包含包含相同三个目标的那些行的数据帧.

filtered_df = {'Target1':['IL17', 'TLR4', 'IL36','MEK'],
            'Target2':['CD80', 'ERK', 'STAT1','TLR4'],
            'Target13':['ERK', 'MEK', 'IL18','STAT3'],
            'All_targets':['IL17_CD80_ERK', 'TLR4_ERK_MEK', 'IL36_STAT1_IL18','MEK_TLR4_STAT3']}

提前谢谢您!

推荐答案

为按位置 Select 的前3列创建冻结集,然后按Series.duplicated复制,最后按boolean indexing筛选:

mask = df.iloc[:, :3].apply(frozenset, 1).duplicated(keep=False)
df1 = df[mask]
print (df1)

  Target1 Target2 Target13    All_targets
0    IL17    CD80      ERK  IL17_CD80_ERK
2     ERK    IL17     CD80  ERK_IL17_CD80

df2 = df[~mask]

Python相关问答推荐

Polars将相同的自定义函数应用于组中的多个列,

巨 Python :逆向猜谜游戏

在极点中读取、扫描和接收有什么不同?

一个telegram 机器人应该发送一个测验如何做?""

如何获取包含`try`外部堆栈的`__traceback__`属性的异常

在pandas中,如何在由两列加上一个值列组成的枢轴期间或之后可靠地设置多级列的索引顺序,

将相应的值从第2列合并到第1列(Pandas )

使用pythonminidom过滤XML文件

为什么在生成时间序列时,元组索引会超出范围?

将参数从另一个python脚本中传递给main(argv

使用元组扩展字典的产品挑战

运行从Airflow包导入的python文件,需要airflow实例?

将.exe文件从.py转换后出现问题.";ModuleNotFoundError:没有名为';Selify;的模块

通过PyTorch中的MIN函数传递渐变

使用Mysql Connector通过Python创建Mysql Storec过程

如何只保留Pandas DataFrame尾部的第一个重复行?

为什么REGISTER_NEXT_STEP_HANDLER不立即调用函数并等待另一条消息

我如何沿着我的图表绘制一条线来显示哪里的数据密度最高?

Django中带有ForeignKey的抽象模型无法按预期继承

游程编码产生错误的结果