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

如何计算Pandas DataFrame中两个指定日期索引的天数差?

Pandas中计算两个日期索引的天数差值

你当前的问题核心是日期索引为字符串类型,无法直接进行数值计算,需要先转换为datetime格式再操作,具体实现步骤如下:

关键步骤说明

  • 先将DataFrame的date索引转换为datetime64类型,这样才能支持日期运算
  • 提取d1和d2时,直接获取单个datetime对象(而非数组形式),避免后续计算麻烦
  • 两个datetime对象相减后,通过.days属性获取天数差值

完整实现代码

import pandas as pd

# 构造数据
df1 = pd.DataFrame({
    "date": ['2021-3-22', '2021-3-23', '2021-3-24', '2021-3-25', '2021-3-26'],
    "x": ['1', 1, 'nan', 'nan', 'nan' ]
})

# 将date列转为datetime类型并设为索引
df1['date'] = pd.to_datetime(df1['date'])
df1.set_index('date', inplace=True)

# 提取d1:x=1的最后一行日期(统一转为字符串匹配,避免类型不一致漏选)
d1 = df1[df1.x.astype(str) == '1'].tail(1).index[0]
# 提取d2:DataFrame最后一行日期
d2 = df1.tail(1).index[0]

# 计算天数差值
day_diff = (d2 - d1).days
print(f"天数差值: {day_diff}")

代码补充说明

  1. 原数据中x列混合了字符串和数值类型,用astype(str) == '1'可以统一匹配所有值为1的行,避免漏选
  2. 使用pd.to_datetime()转换日期后,索引变为datetime对象,直接相减得到Timedelta类型,通过.days即可提取整数天数
  3. 提取索引时用index[0]代替index.values,直接得到单个datetime对象,无需额外处理数组格式

运行结果:

天数差值: 3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 02:55:17