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

Python中计算日期差值时去除“days”关键字,得到整数天数

解决timedelta列提取整数天数的问题

嗨,这个问题我之前处理pandas日期差的时候也碰到过,其实有两种简单高效的方法可以去掉“days”字样,只保留整数天数:

方法一:使用timedelta的.dt.days属性(推荐)

这是最直接的原生方法,因为你的Days列是timedelta64[ns]类型,pandas为这类数据提供了.dt.days属性,能直接提取对应的整数天数,完全不需要处理字符串:

# 如果已经计算出Days列(timedelta类型)
df['Days'] = df['Days'].dt.days

# 或者直接在计算差值时一步到位
df['Days'] = (df['Date2'] - df['Date1']).dt.days

处理后,Days列的类型会变成整数(int64),值就是纯数字,比如1、4,不会带“days”后缀。

方法二:字符串提取(仅当Days列是字符串类型时用)

如果你的Days列不小心被转换成了字符串类型(比如导出后再导入),可以用正则提取数字部分,再转成整数:

df['Days'] = df['Days'].str.extract('(\d+)').astype(int)

不过优先推荐方法一,它是针对timedelta类型的原生操作,速度更快也更可靠。

举个完整的示例:

import pandas as pd

# 构造示例数据
df = pd.DataFrame({
    'Date1': ['2017-10-24', '2017-11-24'],
    'Date2': ['2017-10-25', '2017-11-29']
})

# 确保日期列是datetime类型
df['Date1'] = pd.to_datetime(df['Date1'])
df['Date2'] = pd.to_datetime(df['Date2'])

# 计算并提取整数天数
df['Days'] = (df['Date2'] - df['Date1']).dt.days

print(df)

输出结果:

Date1      Date2  Days
0 2017-10-24 2017-10-25     1
1 2017-11-24 2017-11-29     4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:13:51