如何在pandas中基于两个日期列计算生成duration时长列
实现方法
你可以按以下两步操作完成需求:
- 先把两个日期列从字符串格式转换为pandas的datetime格式,这一步是日期运算的前提
- 直接用结束日期减去起始日期,即可得到间隔时长,可根据需要选择返回timedelta类型还是纯数字的天数值
完整示例代码如下:
import pandas as pd # 读取数据集 expeditions = pd.read_csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2020/2020-09-22/expeditions.csv") # 转换日期列格式 expeditions['basecamp_date'] = pd.to_datetime(expeditions['basecamp_date']) expeditions['highpoint_date'] = pd.to_datetime(expeditions['highpoint_date']) # 新增duration列,为timedelta类型间隔 expeditions['duration'] = expeditions['highpoint_date'] - expeditions['basecamp_date'] # 如果你需要纯数字的天数间隔,可以用下面的代码新增duration_days列 expeditions['duration_days'] = (expeditions['highpoint_date'] - expeditions['basecamp_date']).dt.days
注意:如果两个日期列存在空值,运算得到的对应行结果会自动为NaT(时间类型空值),符合常规处理逻辑;如果需要其他单位的间隔时长,可基于总秒数.dt.total_seconds()做单位换算即可
内容的提问来源于stack exchange,提问作者user17501078
相关产品推荐
相关产品推荐

