# 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
设置小数点保留位数
上面计算得到的小时日期差小数位很多,如何保留小数位呢?
df['日期差'] = df['当前时间'] - df['日期']
df['日期差'] = [ "%.2f" % ((d.days * 86400 + d.seconds) / 3600) for d in df['日期差']]
df
%f表示输出浮点型,%.2f,表示保留小数点后2位