Pandas:在给定条件的情况下添加具有均匀间隔时间戳的新行



我有以下数据帧:

value                 timestamp
20.713936   2019-03-04 17:59:36 UTC
20.871742   2019-03-04 18:08:31 UTC

我想根据时间戳列的时差向数据帧添加新行(如果超过 1 分钟但少于 15 分钟)。它应该看起来像这样,尽管不完全是这样:

value                 timestamp
20.713936   2019-03-04 17:59:36 UTC
NaN   2019-03-04 18:00:36 UTC
NaN   2019-03-04 18:01:36 UTC
NaN   2019-03-04 18:02:36 UTC
NaN   2019-03-04 18:03:36 UTC
NaN   2019-03-04 18:04:36 UTC
NaN   2019-03-04 18:05:36 UTC
NaN   2019-03-04 18:06:36 UTC
NaN   2019-03-04 18:07:36 UTC
20.871742   2019-03-04 18:08:31 UTC

我想做一个函数来做这样的事情:

  1. 计算两个时间戳之间的时间差并检查 条件。
  2. 如果条件为 true,则在 差异并使用它来了解我将要成为多少行 插入(如果分钟差为 9,那么我将插入 8 个新行)。
  3. 以连续 +1 的增量填充新的时间戳行 纪要。

由于 Pandas 如此强大,我想知道是否有一种方法可以实现相同的目标,而无需编写这些函数并避免使用 if/for 循环。

我认为在每个以前的时间戳上添加 1 比找到等间距的时间戳向量更容易。

我也想过在辅助框架的帮助下做到这一点,并按时间戳进行"有序合并",但我迷失了这个。

有人知道如何做到这一点吗?

谢谢你的时间!

使用pandas.to_datetimepandas.DataFrame.asfreq

import pandas as pd
df
value           timestamp
0  20.713936 2019-03-04 17:59:36
1  20.871742 2019-03-04 18:08:31
df['timestamp'] = pd.to_datetime(df['timestamp'])
new_df = df.set_index('timestamp', drop=True)
new_df = new_df.asfreq('1min').reset_index().append(df.iloc[-1]).reset_index(drop=True)

输出:

timestamp      value
0 2019-03-04 17:59:36  20.713936
1 2019-03-04 18:00:36        NaN
2 2019-03-04 18:01:36        NaN
3 2019-03-04 18:02:36        NaN
4 2019-03-04 18:03:36        NaN
5 2019-03-04 18:04:36        NaN
6 2019-03-04 18:05:36        NaN
7 2019-03-04 18:06:36        NaN
8 2019-03-04 18:07:36        NaN
9 2019-03-04 18:08:31  20.871742

你应该看看pandas.date_range()。我认为这就是你要找的。

最新更新