pandas 中处理日期相减问题.

假设 有这样 一个需求, 我获取了一组日期是某个人的通话日期,
我想计算出 这段时间里面, 没有通话的天数, 以及 连续3天以上没有通话的次数

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
@Time    : 2019/5/1 08:02
@File    : test_diff.py
@Author  : frank.chang@shoufuyou.compandas 里面 如何 对日期进行相减 .假设 有这样 一个需求, 我获取了一组日期是某个人的通话日期,
我想计算出 这段时间里面, 没有通话的天数,  以及 连续3天以上没有通话的次数如何计算呢?举个例子:假设 我要计算 从5.2号 到 5.11 这段时间里,没有通话的天数['2018-05-02', '2018-05-05', '2018-05-11']可以看出 这些天 没有通话的天数,  无通话天数 就是 6 天
nocall_date = [5.3, 5.4 ,5.6 ,5.7,  5.8, 5.9,5.10 ]连续3(包括3天)天以上没有通话的次数:5.6 ,5.7,  5.8, 5.9,5.10   这是 1 次5.3, 5.4    这是  0 次总的 就是 1 次solution:   首先 把这些 日期转成pandas.Series   之后 排序,去重之后, 然后diff
无通话记录的就是 差值 大于1 天的记录.连续3(包括3天)天以上没有通话的记录 就是 差值 大于4天 的记录."""from datetime import timedeltaimport pandas as pdfrom datetime import datetimeif __name__ == '__main__':call_dates = ['2018-05-02', '2018-05-03', '2018-07-21', '2018-07-15', '2018-05-07','2018-05-07', '2018-07-20', '2018-07-17', '2018-07-19', '2018-07-19','2018-07-13', '2018-06-14', '2018-05-19']# 转成 datetime 类型mydate = [datetime.strptime(item, '%Y-%m-%d') for item in call_dates]# 转成 series s = pd.Series(mydate)# 去除重复数据s.drop_duplicates(inplace=True)# 排序s.sort_values(inplace=True)# 重新调整一下index 下标s.reset_index(drop=True, inplace=True)# 求差值diff_value = s.diff()one_day = timedelta(days=1)three_day = timedelta(days=3)# 计算无通话记录的次数diff_days = diff_value.loc[lambda x: x > one_day]# 重置 indexdiff_days.reset_index(drop=True, inplace=True)print(f"无通话记录的次数:{diff_days.size}")nocall_days = sum([delta.days for delta in diff_days]) - diff_days.sizeprint(f"无通话记录的天数:{nocall_days}")# 计算 连续3(包括3天)天以上没有通话的记录three_days_nocall = diff_value.loc[lambda x: x > three_day]print(f"连续3(包括3天)天以上没有通话的记录的次数:{three_days_nocall.size}")

去重 排序后的series


diff_value

过滤后掉 1day 的 差值的 series diff_days

结果如下:

无通话记录的次数:7
无通话记录的天数:70
连续3(包括3天)天以上没有通话的记录的次数:4
总结

本文主要讲了如何将 时间字符串转成pandas 中 可以相减的方式. 方法是先转成 datetime 之后 转成 series ,在series 里面 可以方便的实现 日期相减,去重,排序等操作.

分享快乐,留住感动. 2019-05-01 09:35:08 --frank

pandas 中处理日期相减问题相关推荐

  1. ORACLE中的日期相减

    最近做医院的系统,有很多数据要求求出一个时间段来,比如手术执行多长时间,患者住了多长时间的院等.每次都是BAIDU,后来发现在ORACLE中,两个日期相减的差是以天计算的.如: select to_d ...

  2. pandas 两个日期相减!注意点

    今天在做日期相减的时候,一直出现一个错误,错误如下 假如有数据 dd = pd.DataFrame({"d1": ['2022-08-26 14:36:34','2022-08-2 ...

  3. python中时间日期相减并转化为秒

    python在时间日期转化时候怎样相减转化 秒 ,刚有人咨询我这些问题,写了一些代码 希望对你有点用 from datetime import datetime now_time = datetime ...

  4. pandas 中上下两行相减(隔行相减) -- shift函数的使用

    pandas 中上下两行相减(隔行相减) -- shift函数的使用 最近使用pandas处理数据,需求是想相邻两行上下相减,查API发现shift函数,很灵活,.你也可以隔任意行相减. p['xx_ ...

  5. mysql中日期相减_解放双手!用这3个日期函数解决入职、工龄等天数的计算

    人事部门员工的入职天数.财务部门合同的到期剩余天数等等,可以通过Excel表格来实现自动计算功能. 今天小编分享三个与日期有关的函数 一.EDATE函数 很多公司新员工入职会有3个月试用期,根据入职日 ...

  6. 两个年月日怎么相减_(excle可以计算日期差值吗)excel表中,两个日期相减如何得出相差年月...

    如何使用excel函数计算两个日期参数的差值 "使用excel函数计算两期参数的差值"的操骤是: 1.以Excel 2016为例,打开Excel工作表: 2.由已知条件可知,需要根 ...

  7. mysql中日期相减_非凡教育教你excel怎么计算两个日期天数差和时间差

    商务办公培训老师在本文中主要是介绍如何在excel中计算日期和时间,包括两个日期之间的天数.时间之间的差和显示样式. 首先,计算两个日期之间的天数.在excel中,两个日期直接相减就可以得到两个日期间 ...

  8. sql 数据库语句中日期相减

    sql中两个日期相减 1.相差天数 select trunc(sysdate,'yyyy')-to_date('2009-01-04','yyyy-mm-dd') from dual; 2.相差月数 ...

  9. mysql时间相减得到天数保留两位_mysql 中两个日期相减获得 天 小时 分钟 或者 小时:分钟的格式...

    /**有一个需求,要求获得两个日期想减的天数,小时数,分钟数.通过查找资料,于是乎我写出了如下代码,来获得两个字段.*/ IFNULL(CONCAT( IF(aib.`forecast_reply_t ...

最新文章

  1. 设计模式-创建型模式-工厂模式(工厂三兄弟) TypeScript
  2. win10光驱位连接计算机,windows10不能识别光驱位硬盘
  3. 遗传算法求解背包问题
  4. KubeCon 2018 参会记录 —— FluentBit Deep Dive 1
  5. 计算机专业薪资首超金融,“年薪20万”大学专业排名出炉,人工智能蝉联榜首,金融无缘前五...
  6. 开源的WebKit 浏览器引擎受多个漏洞影响,可导致 RCE 后果
  7. iOS直播集成和问题总结(阿里云直播)
  8. [bzoj2002][Hnoi2010]Bounce 弹飞绵羊(LCT)
  9. linux新漏洞,「漏洞通告」Linux Kernel 信息泄漏权限提升漏洞(CVE-2020-8835)
  10. Atitit 操作系统原理索引 目录 1. 操作系统原理(cpu,process,mem,file,device mana) 1 1.1. 第1章 操作系统概述 1 2. 处理器管理 2 2.1.
  11. 如何实现一个高速文件下载器
  12. C语言求素数的几种方法
  13. 虚拟化工具介绍 (资源)
  14. 计算机安装微信打不开,微信电脑版打不开怎么办?解决办法如下
  15. 我自己在学arm7——ourdev
  16. mysql打开数据库命令_MySQL操作数据库指令
  17. 40Gbit和100Gbit的网络可视性解决方案
  18. ubuntu18.04安装opencv记录
  19. Word2013制作中国的传统福字在屋门上贴的福字(福倒了)
  20. 实验三 连续系统分析

热门文章

  1. edittextview 取消下划线
  2. Linux中ifconfig的使用
  3. 前端零基础入门-002-集成开发环境
  4. 【数据结构】表达式建树
  5. java 交流群 14187321 欢迎java爱好者参与
  6. 黑马Java常见面试题基础(一)
  7. 批量定义方程组,用for循环,方程的数组建立,matlab,for循环也可批量定义函数
  8. C语言——数据结构之广义表(概念及其存储结构)
  9. DL实现semantic segmentation
  10. 在docker中出现的僵尸进程怎么处理