原始Excel数据
诉求:往Excel中追加两列"当前时间"、“时间差”,计算日期和当前时间相差的天数、小时、秒, 注:一天等于86400秒
插入两列数据到表格
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()
now_time = now.strftime(format)
df.insert(3,"当前时间", now_time)
df.insert(4,'日期差', '')
此时,得到如下的数据:
计算两列的时间差
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['日期差']]
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位
|