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

如何在Pandas中获取重采样后新增行的索引

获取重采样过程中新增行的索引

没问题!要拿到重采样时自动添加的行的索引其实很简单,核心就是对比重采样前后的索引集合,找出原始DataFrame里没有的那些索引值。我结合你的代码给你演示具体实现:

完整示例代码

import numpy as np
import pandas as pd
from datetime import datetime

# 创建DataFrame并删除部分行
rng = pd.date_range('2000-01-01', periods=365, freq='D')
df = pd.DataFrame({'Val': np.random.randn(len(rng))}, index=rng)
df = df.drop([datetime(2000,1,5), datetime(2000,1,24)])

# 1. 保存原始缺失行后的索引
original_index = df.index

# 2. 执行重采样和插值操作
df_resampled = df.resample('D').interpolate(method='linear')

# 3. 获取重采样时新增的索引(两种方法任选其一)
# 方法一:使用difference方法计算差集
added_indices = df_resampled.index.difference(original_index)

# 方法二:使用isin+取反筛选
# added_indices = df_resampled.index[~df_resampled.index.isin(original_index)]

# 打印结果
print("重采样新增的行索引:")
print(added_indices)

原理说明

  • df.resample('D')会自动补全缺失的每日索引,生成完整的日期序列;
  • difference方法会返回仅存在于重采样后索引、但不存在于原始索引的所有元素,正好就是重采样过程中添加的行的索引;
  • 第二种方法用isin判断索引是否属于原始集合,再通过~取反,也能筛选出新增的索引,效果完全一致。

运行代码后,你会得到之前手动删除的2000-01-05和2000-01-24这两个日期,也就是重采样时被补回来的行的索引。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 22:12:37