Pandas如何将另一列的分钟数加到时间列生成新列
Pandas 时间列加分钟数实现方案
你之前用timedelta未成功,核心是两个问题:原生Python的timedelta不支持Pandas Series批量运算、object类型的分钟列无法直接参与时间差计算,按以下步骤实现即可:
完整实现代码
import pandas as pd # 原始测试数据 data = {'time':['10:45:00', '09:30:00', '17:00:00', '15:50:00'], 'minutes_to_be_add': [10, 5, 7, 20]} df = pd.DataFrame(data=data) # 若time列还未转成datetime类型,先执行类型转换(已是datetime64[ns]可跳过) df['time'] = pd.to_datetime(df['time'], format='%H:%M:%S') # 分钟列转数值后生成对应时间差,和time列相加得到结果 df['future_time'] = df['time'] + pd.to_timedelta(pd.to_numeric(df['minutes_to_be_add']), unit='m') # 格式化输出为时分秒字符串,匹配你需要的展示效果 df['future_time'] = df['future_time'].dt.strftime('%H:%M:%S')
运行结果
执行后打印df['future_time']输出如下,完全匹配预期:
0 10:55:00 1 09:35:00 2 17:07:00 3 16:10:00 Name: future_time, dtype: object
常见踩坑说明
- 不要直接用Python原生
datetime.timedelta处理整列数据,它只支持单个数值输入,批量处理Pandas列必须用pd.to_timedelta做向量化运算 minutes_to_be_add为object类型时,哪怕存储的内容是数字,也需要先用pd.to_numeric转成整数/浮点型,否则无法被识别为有效的时间差参数
内容的提问来源于stack exchange,提问作者elnino
相关产品推荐
相关产品推荐

