我尝试向数据帧添加一列,该列指示每行索引的时间差和固定的时间戳。数据帧由一个datetimeindex和一些字符串列组成。你知道吗
我用
d["diff"] = d.index-t0
计算所述时差。由于之前的过滤,最大可能的差异值应该在10到20秒之间。但是,我经常会在一天内得到一些差异(少1到10秒),即使实际的差异大约是5秒
我读到以前版本的熊猫有这样的问题,但据说是长期固定的。你知道吗
我的解决方法是复制索引,将其强制转换为int64,将t0强制转换为int64,从所有行中减去t0,然后将diff列转换回timedelta,但这看起来非常低效和丑陋。你知道吗
PS:在OSX和Debian8上都使用Pandas0.16.0。你知道吗
编辑:根据要求,一个样本:
2013-12-12 13:50:48 # t0
timestamp
2013-12-16 13:50:52 4 days 00:00:04
Name: diff, dtype: timedelta64[ns]
我刚刚注意到,日期完全不存在,我使用indexer\u between\u time()来获取索引,只查看时间,而不是日期。这更让人困惑。你知道吗
indices = df.index.indexer_between_time(start_time=index,end_time=index+DateOffset(seconds=t_offset) )
所以最终的原因是你用
between_time
来寻找你想要的时间范围。不幸的是,between_time
实际上找不到某个范围内的时间,它找到的时间与一天中相同的时间相匹配,而不管是哪一天(我以前肯定犯过同样的错误)。要查找特定范围内的时间,可以执行以下操作:只要你的
DateTimeIndex
是单调的/排序的,这就可以工作,如果不是,你可能想先排序。你知道吗相关问题 更多 >
编程相关推荐