根据熊猫的最新日期进行合并

时间:2020-10-28 12:45:20

标签: python pandas numpy dataframe

我想将数据框“原始”与另一个数据框“确认”结合起来

原始

LogId
1233
1234
1235

致谢

LogId  Reason       Time
1233   Valid        13/09/20 09:45:19
1233   Not Valid    13/09/20 17:23:20
1234   Not Valid    25/09/20 14:56:34
1234   Valid        21/09/20 12:23:12

我的代码:

pd.merge(raw,acknowledgement,on='Log Id',how='left')

现在,当我在“日志ID”上进行左联接时,值将重复。

所需的输出应仅包含该特定“日志ID”的最新日期

LogId  Reason       Time
1233   Not Valid    13/09/20 17:23:20
1234   Not Valid    25/09/20 14:56:34
1235   #N/A          #N/A

1 个答案:

答案 0 :(得分:2)

让我们尝试groupby + idxmax来获取每个Time的最大值LogId的索引,然后使用这些索引来过滤数据框,然后将其与{{ 1}}:

raw

或者,您也可以尝试:

ack = acknowledgement.loc[acknowledgement.groupby('LogId')['Time'].idxmax()]
raw.merge(ack, on='LogId', how='left')

m = acknowledgement.sort_values('Time').duplicated('LogId', keep='last')
raw.merge(acknowledgement[~m], on='LogId', how='left')