我想将数据框“原始”与另一个数据框“确认”结合起来
原始
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
答案 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')