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

如何利用Datetime扩展Pandas DataFrame并补全缺失日期?

解决Pandas DataFrame扩展缺失日期并填充NaN的问题

我来帮你完成这个需求,核心是将原数据的日期列转为索引,然后重新索引到完整的日期范围,再调整排序顺序即可。下面是具体步骤和完整代码:

步骤分解

  1. 处理原DataFrame的日期列:首先要把第一列的字符串日期转换成Pandas可识别的日期类型,并设置为DataFrame的索引,这样才能和后续的完整日期范围对齐。
  2. 创建完整的日期范围:生成包含你需要的所有日期(2001-01-22到2001-01-26)的DatetimeIndex。
  3. 重新索引并排序:用reindex方法把原数据映射到完整日期范围,缺失的日期会自动填充NaN,最后按索引降序排列得到你要的顺序。

完整代码实现

import pandas as pd
import numpy as np

# 如果你是从CSV读取数据,注意你的数据是空格分隔,所以sep要设置为匹配任意空格
# df = pd.read_csv(fi, header=None, sep=r'\s+')

# 先模拟你的原数据
data = [
    ['1/25/2001', 1364.3, 1367.35, 1354.63],
    ['1/24/2001', 1360.4, 1369.75, 1357.28],
    ['1/23/2001', 1342.9, 1362.9, 1339.63]
]
df = pd.DataFrame(data)

# 步骤1:转换日期列并设置为索引
df[0] = pd.to_datetime(df[0], format='%m/%d/%Y')
df = df.set_index(0)

# 步骤2:创建完整的日期范围(包含2001-01-22到2001-01-26)
full_date_range = pd.date_range(start='2001-01-22', end='2001-01-26')

# 步骤3:重新索引并按日期降序排序
res = df.reindex(full_date_range).sort_index(ascending=False)

print(res)

代码细节说明

  • pd.to_datetime(df[0], format='%m/%d/%Y'):明确指定日期格式,避免Pandas自动解析出错,确保字符串日期能正确转为datetime类型。
  • pd.date_range:相比np.arange,这个方法更适配Pandas的日期处理,直接生成DatetimeIndex,后续和原索引对齐更顺畅。
  • reindex(full_date_range):将原DataFrame的索引替换为完整日期范围,缺失的日期对应的行自动填充NaN。
  • sort_index(ascending=False):把结果按日期从新到旧排序,和你需要的输出顺序完全一致。

最终输出结果

运行代码后会得到你想要的结果:

1        2        3
2001-01-26       NaN      NaN      NaN
2001-01-25  1364.30  1367.35  1354.63
2001-01-24  1360.40  1369.75  1357.28
2001-01-23  1342.90  1362.90  1339.63
2001-01-22       NaN      NaN      NaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:19:57