dataframe取 时间在30日内的记录

数据:

df = pd.DataFrame({'date':['客户在2016年6月12日交货',
                           '客户在2019年12月25日交货',
                           '客户在2020年1月19日交货',
                           '客户在2020年2月11日交货',
                           '客户在2020年2月16日交货'],
                           'money':[1.56, 2.04, 3.45, 10.10, 5.62]})

显示:


图1.png

第一步:把 date 字段中的年月日信息 通过正则 取出来,并存成新字段 交货时间,但 交货时间 字段是list的格式

df['交货时间'] = df['date'].str.findall(r"(\d{4}年\d{1,2}月\d{1,2}日)")

显示:


图2.png

第二步:把 交货时间 字段中的年月日 替换成英文格式的 '-' ,方便后面把时间转换后进行比较

def latestTime(dDate):
    data01 = dDate['交货时间']
    dataList = []
    for f017v_data in data01:
        f017v_data = f017v_data.replace('年', '-')
        f017v_data = f017v_data.replace('月', '-')
        f017v_data = f017v_data.replace('日', '-')
        f017v_data = pd.to_datetime(f017v_data)
        f017v_data = str(f017v_data)[0:10]
        dataList.append(f017v_data)
        dataList = dataList[0]
    return dataList

df['交货时间'] = df.apply(latestTime, axis = 1)

显示:


图3.png

第三步:把 交货日期 在距离今天 30日 内的数据 通过新建字段 bool中标记为1,最后只取 bool 字段为1的记录即可,这样 就会在这30天内每天都进行交货相关信息的提醒。

注:今天是 2020年1月15日

today = pd.datetime.now()

def dfApply(d):
    d = datetime.datetime.strptime(d, '%Y-%m-%d')
    theDay = today + dateutil.relativedelta(days = 30)
    if d <= theDay and d >= today:
        return 1
    else:
        return 0 

df['bool'] = df['交货时间'].apply(dfApply)
df = df[df['bool'].isin([1])]  # 只取bool值为1 的记录
df.drop(df[['bool', '交货时间']], axis = 1, inplace = True)  # 删除字段 bool 和 交货时间
df.to_csv('df.csv', encoding = 'utf-8-sig', index = None)  # 保存为csv格式,且不存 行号

显示:


图4.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前言 网上关于mysq时间、python时间与时间戳等文章很多,翻来翻去找不到头绪,根据不同博客的写法,挑了几个来...
    中乘风阅读 907评论 0 1
  • 1.badgeVaule气泡提示 2.git终端命令方法> pwd查看全部 >cd>ls >之后桌面找到文件夹内容...
    i得深刻方得S阅读 4,942评论 1 9
  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 14,235评论 0 15
  • 此篇文章内容是我很久以前在印象笔记中的一个知识总结,大概122个Linux指令。如今,写出来就当再回顾一遍了。若有...
    StephenZhang01阅读 1,161评论 0 5
  • 1.OC里用到集合类是什么? 基本类型为:NSArray,NSSet以及NSDictionary 可变类型为:NS...
    轻皱眉头浅忧思阅读 1,464评论 0 3

友情链接更多精彩内容