如何在Pandas中计算DataFrame两列的时间差(以分钟为单位)
将Pandas Timedelta转换为分钟数
嘿,这个问题我常碰到,给你几个实用的解决方案:
方法1:精确计算总分钟数(带小数)
如果你需要保留完整精度的分钟数(比如包含秒数转换的小数部分),可以用dt.total_seconds()先获取时间差的总秒数,再除以60得到分钟数:
# 直接计算并转换 df['TIME_TO_REPORT'] = (df['TEST_TIME'] - df['RECEIPT_DATE_TIME']).dt.total_seconds() / 60 # 如果你已经提前算出了timedelta列,也可以直接对该列处理 # df['TIME_TO_REPORT'] = df['TIME_TO_REPORT'].dt.total_seconds() / 60
举个例子,你给出的0 days 05:58:00会被转换成358.0分钟;如果是0 days 00:00:30这种带秒数的时间差,会得到0.5分钟,精度完全保留。
方法2:快速取整转换(整数分钟)
如果只需要整数分钟(自动截断小数部分),可以直接用astype指定转换为分钟单位的timedelta,再转成整数类型:
df['TIME_TO_REPORT'] = (df['TEST_TIME'] - df['RECEIPT_DATE_TIME']).astype('timedelta64[m]').astype(int)
这个方法会直接把时间差转换成整数分钟,比如0 days 05:58:30会得到358分钟,适合不需要小数精度的场景。
对应你示例数据的转换结果
针对你给出的示例输出,两种方法的结果如下:
| 原timedelta值 | 方法1结果 | 方法2结果 |
|---|---|---|
| 0 days 05:58:00 | 358.0 | 358 |
| 0 days 03:46:00 | 226.0 | 226 |
| 0 days 05:25:00 | 325.0 | 325 |
这样处理后,你就能得到纯数字格式的分钟数啦~
内容的提问来源于stack exchange,提问作者lasan13
相关产品推荐
相关产品推荐

