You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何去除Pandas日期差结果的'days'后缀,转为整数?

问题:Pandas日期差值列转为整数天数

在Pandas中计算两个日期列的差值后,得到的是带有'days'后缀的timedelta类型值,需要将其转为纯整数天数。

原代码示例:

data['TIMESTAMP'] = pd.to_datetime(data['TIMESTAMP'],format='%d-%b-%Y')
data['EXPIRY_DT'] = pd.to_datetime(data['EXPIRY_DT'],format='%d-%b-%Y')
data.sort_values(by = ['TIMESTAMP','SYMBOL','EXPIRY_DT'],inplace=True)
data.reset_index(drop=True,inplace=True)
data['DTE'] = data['EXPIRY_DT'] - data['TIMESTAMP']
data['DTE'].head()

当前输出:

0   6 days
1   6 days
2   6 days
3   6 days
4   6 days
Name: DTE, dtype: timedelta64[ns]

解决方案

方法1:使用dt.days属性(推荐)

直接通过timedelta类型的.dt.days属性提取天数,得到整数类型结果:

data['TIMESTAMP'] = pd.to_datetime(data['TIMESTAMP'],format='%d-%b-%Y')
data['EXPIRY_DT'] = pd.to_datetime(data['EXPIRY_DT'],format='%d-%b-%Y')
data.sort_values(by = ['TIMESTAMP','SYMBOL','EXPIRY_DT'],inplace=True)
data.reset_index(drop=True,inplace=True)
# 修改差值计算行,提取天数
data['DTE'] = (data['EXPIRY_DT'] - data['TIMESTAMP']).dt.days
data['DTE'].head()

输出效果:

0    6
1    6
2    6
3    6
4    6
Name: DTE, dtype: int64

方法2:处理缺失值(若存在NaT)

如果日期差值中存在NaT(无效日期),用fillna填充后转整数:

data['DTE'] = (data['EXPIRY_DT'] - data['TIMESTAMP']).dt.days.fillna(0).astype(int)

方法3:通过总秒数计算天数

通过总秒数除以一天的秒数得到天数,适合灵活转换时间单位的场景:

data['DTE'] = ((data['EXPIRY_DT'] - data['TIMESTAMP']).dt.total_seconds() / (24 * 3600)).astype(int)

内容的提问来源于stack exchange,提问作者smg_08

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 21:21:46