image.png

  1. # coding=utf-8
  2. import pandas as pd
  3. import datetime
  4. df = pd.read_excel(r"C:\Users\Administrator\Desktop\测试数据.xls") # 读取数据
  5. format = "%Y-%m-%d %H:%M:%S" # 设定日期格式
  6. now = datetime.datetime.now() # 当前时间:datetime.datetime(2021, 7, 30, 19, 43, 0, 844000)
  7. now_time = now.strftime(format) # 格式化时间:'2021-07-30 19:43:00'
  8. # 插入两列数据
  9. df.insert(3,"当前时间", now_time) # 插入当前时间到第4列,表头名为"当前时间"
  10. df.insert(4,'日期差', '') # 插入空数据到第5列,表头名为"日期差"

此时,得到如下的数据:
image.png

计算两列的时间差

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

image.png

计算相差天数

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

image.png

计算相差秒数

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

image.png

计算相差小时数

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

上面的秒数/3600即可得到小时数
image.png

设置小数点保留位数

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

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

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