我正在进行数据帧DF:

columnA columnB columnC columnD columnE
A        B         10      C       C
A        B         10      D       A
B        C         20      A       A
B        A         20      D       A
B        A         20      D       C

如果存在columnA, columnB, columnC的重复项,我想删除重复项.在我的例子中,重复项是:

columnA columnB columnC columnD columnE
A        B         10      C       C
A        B         10      D       A
B        A         20      D       A
B        A         20      D       C

如何保留重复行中的一行,其中columnE等于C? 因此,完整数据帧的输出为:

columnA columnB columnC columnD columnE
A        B         10      C       C
B        C         20      A       A
B        A         20      D       C

推荐答案

您可以先使用DataFrame.sort_values表示首选C值,然后使用DataFrame.drop_duplicates和/或原始订单添加DataFrame.sort_index:

out = (df.sort_values('columnE', key=lambda x: x.ne('C'))
         .drop_duplicates(['columnA','columnB','columnC'])
         .sort_index())
print (out)
  columnA columnB  columnC columnD columnE
0       A       B       10       C       C
2       B       C       20       A       A
4       B       A       20       D       C

或者使用DataFrameGroupBy.idxmax表示索引,首选C表示 Select 行,使用DataFrame.loc表示原始排序:

idx = df['columnE'].eq('C').groupby([df['columnA'],df['columnB'],df['columnC']]).idxmax()
out = df.loc[idx.sort_values()]
print (out)
  columnA columnB  columnC columnD columnE
0       A       B       10       C       C
2       B       C       20       A       A
4       B       A       20       D       C

Python相关问答推荐

Python 3.12中的通用[T]类方法隐式类型检索

Odoo 14 hr. emergency.public内的二进制字段

使用miniconda创建环境的问题

如何制作10,000年及以后的日期时间对象?

NP.round解算数据后NP.unique

当从Docker的--env-file参数读取Python中的环境变量时,每个\n都会添加一个\'.如何没有额外的?

基于索引值的Pandas DataFrame条件填充

DataFrames与NaN的条件乘法

使用密钥字典重新配置嵌套字典密钥名

索引到 torch 张量,沿轴具有可变长度索引

不能使用Gekko方程'

计算天数

如何在达到end_time时自动将状态字段从1更改为0

从旋转的DF查询非NaN值

在用于Python的Bokeh包中设置按钮的样式

将CSS链接到HTML文件的问题

使用Python TCP套接字发送整数并使用C#接收—接收正确数据时出错

Js的查询结果可以在PC Chrome上显示,但不能在Android Chrome、OPERA和EDGE上显示,而两者都可以在Firefox上运行

如何获得满足掩码条件的第一行的索引?

具有不同坐标的tkinter canvs.cocords()和canvs.moveto()