Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于中的最新日期合并_Python_Pandas_Numpy_Dataframe - Fatal编程技术网

Python 基于中的最新日期合并

Python 基于中的最新日期合并,python,pandas,numpy,dataframe,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

我想用另一个数据帧“确认”左连接数据帧“原始”

未加工的

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')
现在,当我在“logid”上执行左连接时,值被复制

所需的输出应仅包含该特定“日志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

让我们尝试
groupby
+
idxmax
以获取每个
LogId
Time
最大值的索引,然后使用这些索引过滤数据帧,然后将其与
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')


正如@nycorder所指出的,这几乎是一个重复。在
确认上删除重复项
然后合并。我的意见是它是重复的,因为合并解决方案有问题,只需要
ack=acknowledge.loc[acknowledge.groupby('LogId')['Time']].idxmax()]
,但可能我错了。评论不用于扩展讨论;这段对话已经结束。
   LogId     Reason                Time
0   1233  Not Valid 2020-09-13 17:23:20
1   1234  Not Valid 2020-09-25 14:56:34
2   1235        NaN                 NaT