如何从DateTime索引数组中移除开头指定时段的元素(无需精确索引)
移除DateTime索引DataFrame开头指定时长数据的快捷方法
你可以通过基于起始时间计算偏移 cutoff 点的方式实现,不需要手动输入精确索引值,具体写法如下:
核心思路
因为你的DateTime索引是随机累积生成的(非固定频率),直接用'5Min':这种字符串切片无法识别,但可以先获取索引的起始时间,加上指定时长的偏移量,再进行切片筛选。
实现代码
结合你的示例代码,完整的处理方式如下:
import scipy.stats as st import pandas as pd n = 50000 dur = st.expon.rvs(loc=0, scale=1, size=n) sgn = st.norm.rvs(0,1, size=n) t = dur.cumsum() df = pd.DataFrame({'Date_Time':t,'sgn':sgn}) df['Date_Time']=pd.to_datetime(df.Date_Time, unit='s') df=df.set_index(['Date_Time']) # 移除开头5分钟的数据 cutoff = df.index[0] + pd.Timedelta(minutes=5) filtered_sgn = df.sgn[cutoff:]
也可以把筛选逻辑简化成一行:
filtered_sgn = df.sgn[df.index[0] + pd.Timedelta('5min'):]
补充说明
如果你的DateTime索引是固定频率(比如按分钟、小时均匀生成),也可以用df.sgn.truncate(before='5min')来直接截取,但这种方法不适用于你当前的随机时间索引场景。
内容的提问来源于stack exchange,提问作者Erdem Şen
相关产品推荐
相关产品推荐

