我有一个每秒接收多个值的数据集-最多100个DFS (不超过100个,但不是始终如一的100个)。挑战在于,日期字段没有捕获比秒更精确的时间,因此多个行具有相同的hh:mm:ss时间戳。这些都很好,但是我在整个集合中也缺少了几秒钟,也就是说,根本没有显示。
因此,我的2个初始列可能如下所示,其中我错过了54秒的步骤:
2020-08-24 03:36:53, 5
2020-08-24 03:36:53, 8
2020-08-24 03:36:53, 6
2020-08-24 03:36:55, 8因为合法的日期“重复”和我需要的信息,我不想聚合,但我需要创建丢失的秒数,插入它们并填充(NaN等),这样我就可以适当地管理它们,以便与其他数据集对齐。
我唯一能做到这一点的方法似乎是使用嵌套的if循环,它查看前一个时间戳,如果它与当前单元格相同(pt == ct),则不执行任何操作,如果它比当前单元格少1 (pt = (ct-1)),则不执行任何操作,但如果它比当前单元格多2个或更多,则插入缺少的单元格(pt <= (ct-2)。这感觉有点麻烦(虽然可行)。我是不是错过了一种更简单的方法呢?
我在这里以及pandas.pydata.org上的各种函数中检查了很多“填充缺失日期”的线程,但重建索引和最常见的日期填充似乎都依赖于没有重复的日期。任何建议都是很棒的。
发布于 2020-09-17 11:30:50
这可以通过创建一个包含您想要考虑的所有时间点的pandas序列来解决,然后使用原始数据帧对其进行merge。
例如:
start, end = df['date'].min(), df['date'].max()
all_timepoints = pd.date_range(start, end, freq='s').to_series(name='date')
df.merge(all_timepoints , on='date', how='outer', sort=True).fillna(0)将给予:
date value
0 2020-08-24 03:36:53 5.0
1 2020-08-24 03:36:53 8.0
2 2020-08-24 03:36:53 6.0
3 2020-08-24 03:36:54 0.0
4 2020-08-24 03:36:55 8.0https://stackoverflow.com/questions/63929754
复制相似问题