我有一个DF

data = pd.DataFrame({

    "a":["123","123","456","456"],
    
    "b":["12-09-23","13-09-23","12-09-23","13-09-23"],
    "c":["abc","xyz","xyz","cde"]

})

我想根据日期对数据进行重复数据删除,并保留最新日期的记录.然而,如果我的列C包含XYZ,那么我需要保留记录EVEN,尽管日期不是最新的.

我想要的输出是

enter image description here

推荐答案

您可以按日期和相等将值排序为"xyz"(带numpy.lexsort),并使用groupby.last得到每个组的最后一个值:

out = (data
 .iloc[np.lexsort([pd.to_datetime(data['b'], format='%d-%m-%y'),
                   data['c'].eq('xyz')])]
 .groupby('a', as_index=False).last()
)

输出:

     a         b    c
0  123  13-09-23  xyz
1  456  12-09-23  xyz

Python相关问答推荐

如何才能知道Python中2列表中的巧合.顺序很重要,但当1个失败时,其余的不应该失败或是0巧合

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

. str.替换pandas.series的方法未按预期工作

在Pandas DataFrame操作中用链接替换'方法的更有效方法

如何在polars(pythonapi)中解构嵌套 struct ?

如何在Python中并行化以下搜索?

pyscript中的压痕问题

在嵌套span下的span中擦除信息

lityter不让我输入左边的方括号,'

* 动态地 * 修饰Python中的递归函数

如何在PySide/Qt QColumbnView中删除列

matplotlib图中的复杂箭头形状

Python日志(log)模块如何在将消息发送到父日志(log)记录器之前向消息添加类实例变量

将链中的矩阵乘法应用于多组值

用来自另一个数据框的列特定标量划分Polars数据框中的每一列,

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

为什么按下按钮后屏幕的 colored颜色 保持不变?

按列表分组到新列中

将标签与山脊线图对齐

如何在Python中画一个只能在对角线内裁剪的圆?