使用 TimeStamp 在 DataFrame 中为每个丢失的秒添加一条新记录

Add a new record for each missing second in a DataFrame with TimeStamp

成为下一个Pandas DataFrame:

|      date                           |     counter      |
|-------------------------------------|------------------|
|          2022-01-01 10:00:01        |        1         |
|          2022-01-01 10:00:04        |        1         |
|          2022-01-01 10:00:06        |        1         |

我想创建一个函数,给定之前的 DataFrame,returns 另一个类似的 DataFrame,为每个缺失的时间点添加一个新行,并在该时间间隔内添加计数器 0。

|      date                           |     counter      |
|-------------------------------------|------------------|
|          2022-01-01 10:00:01        |        1         |
|          2022-01-01 10:00:02        |        0         |
|          2022-01-01 10:00:03        |        0         |
|          2022-01-01 10:00:04        |        1         |
|          2022-01-01 10:00:05        |        0         |
|          2022-01-01 10:00:06        |        1         |

如果初始 DataFrame 包含超过一天,您应该执行相同的操作,为包含的所有日期填写每个缺失的秒间隔。

感谢您的帮助。

使用 DataFrame.asfreqDatetimeIndex 一起工作:

df = df.set_index('date').asfreq('1S', fill_value=0).reset_index()
print (df)
                 date  counter
0 2022-01-01 10:00:01        1
1 2022-01-01 10:00:02        0
2 2022-01-01 10:00:03        0
3 2022-01-01 10:00:04        1
4 2022-01-01 10:00:05        0
5 2022-01-01 10:00:06        1

您也可以使用 df.resample:

In [314]: df = df.set_index('date').resample('1S').sum().fillna(0).reset_index()

In [315]: df
Out[315]: 
                 date  counter
0 2022-01-01 10:00:01        1
1 2022-01-01 10:00:02        0
2 2022-01-01 10:00:03        0
3 2022-01-01 10:00:04        1
4 2022-01-01 10:00:05        0
5 2022-01-01 10:00:06        1