
# coding=utf-8import pandas as pdimport datetimedf = 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位
