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

