前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >盘点一个工作中Python自动化处理实战问题(番外篇)

盘点一个工作中Python自动化处理实战问题(番外篇)

作者头像
Python进阶者
发布2024-01-04 09:47:50
1360
发布2024-01-04 09:47:50
举报
文章被收录于专栏:Python爬虫与数据挖掘

生当作人杰,死亦为鬼雄。

大家好,我是皮皮。

一、前言

前几天在Python最强王者交流群【哎呦喂 是豆子~】问了一个工作中Python自动化处理实战问题,一起来看看吧。问题描述:

数据在提供的数据表中,在表有编号、环节、审核人、金额、结束时间5列,对【编号、环节、审核人、金额】四条件进行分组,分组内结束时间升序排列,分组内结束时间相差20秒以内的,只保留第一条记录。

大佬再请问下 分组内结束时间相差20秒以内的,只保留第一条记录 这个怎么实现? 这个做出来的老是有问题 有个窗口函数 用了数据又对不太上。

上一篇文章【小小明】给出了自己的解答,这一篇文章我们一起来看看【隔壁😼山楂】的解答。

二、实现过程

【隔壁😼山楂】在这有个疑问,同一个分组内有三个时间,2023-11-27 15:50:00,2023-11-27 15:50:05,2023-11-27 15:50:25,按你这个下来应该剩几个时间?粉丝回答是第1个和第3个。最终效果是:实现分组内任意2个时间点时间差都是大于20s。

这里【隔壁😼山楂】给了自己的代码,如下:

代码语言:javascript
复制
import pandas as pd


def func(date_s):
    """筛选函数"""
    min_date = date_s.iloc[0]
    for num, i in enumerate(date_s):
        if num and (i - min_date).seconds <= 20:
            yield False
        else:
            min_date = i
            yield True

df = pd.read_excel('工作量计算.xlsx')
df.sort_values(["编号", "环节", "审核人", "金额", "结束时间"], inplace=True)
df = df[df.groupby(["编号", "环节", "审核人", "金额"])['结束时间'].transform(func)]
print(df)

代码运行之后,结果如下:

【隔壁😼山楂】补充道:这个跟明佬的效果一样,增加我说的那种情况也是可以筛选出的

顺利地解决了粉丝的问题。pandas被你们玩出花来了。

三、总结

大家好,我是皮皮。这篇文章主要盘点了一个工作中Python自动化处理实战问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。

最后感谢粉丝【哎呦喂 是豆子~】提出的问题,感谢【小小明】、【瑜亮老师】、【隔壁😼山楂】、【郑煜哲·Xiaopang】、【巭孬🕷】给出的思路,感谢【莫生气】、【猫药师Kelly】、【皮皮】、【冫马讠成】等人参与学习交流

------------------- End -------------------

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

万水千山总是情,点个【在看】行不行

/今日留言主题/

随便说一两句吧~~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-01-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python爬虫与数据挖掘 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、实现过程
  • 三、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档