pandas计算excel两列的日期差

news/2024/7/21 7:36:26 标签: pandas, excel, 办公软件

原始Excel数据

在这里插入图片描述
诉求:往Excel中追加两列"当前时间"、“时间差”,计算日期和当前时间相差的天数、小时、秒,
注:一天等于86400秒

插入两列数据到表格

# coding=utf-8
import pandas as pd
import datetime

df = pd.read_excel(r"C:\Users\Administrator\Desktop\测试数据.xls")  # 读取数据

format = "%Y-%m-%d %H:%M:%S"  # 设定日期格式
now = datetime.datetime.now()  # 当前时间:datetime.datetime(2021, 7, 30, 19, 43, 0, 844000)
now_time = now.strftime(format)  # 格式化时间:'2021-07-30 19:43:00'

# 插入两列数据
df.insert(3,"当前时间", now_time)  # 插入当前时间到第4列,表头名为"当前时间"
df.insert(4,'日期差', '')  # 插入空数据到第5列,表头名为"日期差"

此时,得到如下的数据:
在这里插入图片描述

计算两列的时间差

df['当前时间'] = pd.to_datetime(df['当前时间'])  # 转换时间格式
df['日期'] = pd.to_datetime(df['日期'])  # 转换时间格式
df['日期差'] = df['当前时间'] - df['日期']
df

此时,得到如下数据:
在这里插入图片描述

计算相差天数

df['日期差'] = df['当前时间'] - df['日期']
df['日期差'] = [d.days for d in df['日期差']]
df

在这里插入图片描述

计算相差秒数

df['日期差'] = df['当前时间'] - df['日期']
df['日期差'] = [d.days * 86400  + d.seconds for d in df['日期差']]  # d.seconds得到的是后面的xx:xx:xx时间秒数,不包含天数,还需要加上天数的秒
df

在这里插入图片描述

计算相差小时数

df['日期差'] = df['当前时间'] - df['日期']
df['日期差'] = [(d.days * 86400  + d.seconds) / 3600 for d in df['日期差']]
df

上面的秒数/3600即可得到小时数
在这里插入图片描述

设置小数点保留位数

上面计算得到的小时日期差小数位很多,如何保留小数位呢?

df['日期差'] = df['当前时间'] - df['日期']
df['日期差'] = [ "%.2f" % ((d.days * 86400  + d.seconds) / 3600) for d in df['日期差']]
df

%f表示输出浮点型,%.2f,表示保留小数点后2位

在这里插入图片描述


http://www.niftyadmin.cn/n/898886.html

相关文章

CentOS 7安装实时监控日志文件的swatchdog

swatchdog介绍 swatchdog是从一个用于监视Unix syslog工具生成的日志的脚本发展起来的,它可以监视任何类型的日志。swatchdog(Simple WATCH DOG)是一个简单的Perl脚本,用于监视类Unix系统(比如Linux)上的活动日志文件。它根据可以在配置文件中定义的正则…

虚拟机获取不到IP的解决办法

新创建的CentOS 7虚拟机,使用的DHCP获取地址,一直获取不到IP地址,service network restart命令执行多次都不行,使用如下方式后OK su - root dhclient -vifconfig

yum命令安装软件报错One of the configured repositories failed (未知)

报错 [rootlocalhost yum.repos.d]# yum install ansible 已加载插件:fastestmirrorOne of the configured repositories failed (未知),and yum doesnt have enough cached data to continue. At this point the onlysafe thing yum can do is fail. There are a …

-bash: zabbix_get: command not found解决办法

zabbix_get zabbix-get命令是server端用来检查agent端的一个命令,可以用zabbix_get来检查能否采集到数据,进行问题定位 安装 rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm yum clean all yum insta…

ansible-playbook批量创建用户和密码

ansible版本: 2.9.23 ansible --version 创建账户并设置密码 --- - hosts: testbecome: yes # 申请sudo权限vars:user_list: [jf1,jf2,jf3] # 用户名列表tasks:- name: create many useruser:name: "{{ item }}" # 注意必须使用引号,否则会报错passw…

MySQL中查询数据表某一字段为空

select * from wangyou where isnull(book_url);

解决python官网下载慢

国内python镜像源下载地址:http://npm.taobao.org/mirrors/python/

Apache POI表格无法使用pandas打开Excel报错Workbook contains no default style, apply openpyxl‘s default

打不开产生原因 是因为xlsx文件是由Apache POI创建,并不是Microsoft Excel创建,从文件属性里面程序名称是Apache POI可以看到。 解决办法一 手动打开excel,并重新保存或者另存为即可,然后就可以使用pandas打开了。 解决办法二 使…