如何用Python的Pandas处理时间转换与分钟累加需求
用Pandas处理Excel时间数据:转换分钟数与计算累计差值
需求说明
- 将Excel中Column B的
HH:MM:SS格式时间转换为分钟数(保留两位小数),存入Column C - 计算累计差值:首行Column D为0,后续行取当前Column C值与首行Column C值的差值(保留两位小数)
原始数据
| Column A | Column B |
|---|---|
| 12/1/2022 | 3:51:52 |
| 12/1/2022 | 3:53:31 |
| 12/1/2022 | 3:55:11 |
实现代码
import pandas as pd # 读取Excel文件,替换为你的文件路径 df = pd.read_excel("your_file.xlsx") # 1. 将Column B转换为分钟数并保留两位小数 df['Column C'] = pd.to_timedelta(df['Column B']).dt.total_seconds() / 60 df['Column C'] = df['Column C'].round(2) # 2. 计算累计差值,首行设为0 first_c_value = df['Column C'].iloc[0] df['Column D'] = (df['Column C'] - first_c_value).round(2) # 强制首行为0,避免浮点运算带来的微小误差 df.loc[0, 'Column D'] = 0 # 查看结果或保存到新Excel print(df) # df.to_excel("processed_data.xlsx", index=False)
运行结果
| Column A | Column B | Column C | Column D |
|---|---|---|---|
| 12/1/2022 | 3:51:52 | 51.87 | 0 |
| 12/1/2022 | 3:53:31 | 53.52 | 1.65 |
| 12/1/2022 | 3:55:11 | 55.18 | 3.32 |
代码解释
pd.to_timedelta(df['Column B']):把字符串格式的时间转为时间差类型,方便数值计算.dt.total_seconds() / 60:将时间差转换为总秒数后除以60,得到分钟数round(2):按需求保留两位小数- 提取首行Column C的值作为基准,后续行用当前值减去基准值得到累计差值,最后强制首行为0消除浮点误差
内容的提问来源于stack exchange,提问作者Santiago Capelo
相关产品推荐
相关产品推荐

