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
相关产品推荐
相关产品推荐

