首页 > 编程知识 正文

dataframe基本函数,looking for your love right now

时间:2023-05-04 08:20:31 阅读:245478 作者:3663

df:DataFrame,每个工单的操作日志表。列:工单号, 操作时间,操作行为代码

我想找出有哪些工单进行了操作1之后紧接着就是进行操作5

如果是在sql中,直接用lead窗口函数就行。
但是在dataframe中,需要结合groupby和sort_values、shift来实现。

# 1. 按工单和操作时间排序df.sort_values(['工单号','操作时间'], inplace=True)# 2. 给予每行操作一个唯一的主键df['id'] = range(len(df))# 3. 实现窗口函数:对order_id聚合,按照操作时间排序,然后移动窗口a = df.grupby('order_id').apply(lambda x: x.sort_values('操作时间').shift(-1))# 4. 得到字典 id:操作行为代码a.index = a.id-1 # 将a的索引设为主键id,这样字典的主键就是id。id-1:因为经过shift,需要匹配上一行的行为就是id-1dic = a['操作行为代码'].dropna().to_dict()# 5. 通过字典获取下一个操作行为代码df['下一个操作行为代码'] = df['id].map(dict)# 6. 找出有哪些工单进行了操作1之后紧接着就是进行操作5df[(df['操作行为代码']==1)&(df['操作行为代码']==5)]

本方法并不严格,第二个工单的首行会匹配到第一个末行。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。