猿问

在Python的Pandas日期时间列中添加记录

我有如下数据集:


Value       Time         delta time 

2     2009-05-27 18:45     0:15:00

4     2009-05-27 19:00     0:15:00

1     2009-05-27 19:15     0:15:00

1     2009-05-27 19:30     0:15:00

2     2009-05-27 20:45     1:15:00

我使用以下代码计算了每一行之间的时间差:


df['deltatime']= df['Date'].diff(periods=1)

我需要在增量时间超过15分钟的记录之间添加记录。我希望代码的输出像下面这样,添加的记录为0值:


Value     Time             delta time 

2      2009-05-27 18:45    0:15:00

4      2009-05-27 19:00    0:15:00

1      2009-05-27 19:15    0:15:00

1      2009-05-27 19:30    0:15:00

0      2009-05-27 19:45    0:15:00

0      2009-05-27 20:00    0:15:00

0      2009-05-27 20:15    0:15:00

0      2009-05-27 20:30    0:15:00

2      2009-05-27 20:45    0:15:00

我想知道是否有人可以帮助我解决这个问题?


慕尼黑5688855
浏览 125回答 1
1回答

互换的青春

方法1:as.freqnew_df = df.set_index('Time').asfreq('15min', fill_value=0).reset_index()new_df['delta time'] = new_df.Time.diff()>>> new_df                 Time  Value delta time0 2009-05-27 18:45:00      2        NaT1 2009-05-27 19:00:00      4   00:15:002 2009-05-27 19:15:00      1   00:15:003 2009-05-27 19:30:00      1   00:15:004 2009-05-27 19:45:00      0   00:15:005 2009-05-27 20:00:00      0   00:15:006 2009-05-27 20:15:00      0   00:15:007 2009-05-27 20:30:00      0   00:15:008 2009-05-27 20:45:00      2   00:15:00方法2:resamplenew_df= (df.resample('15min', on='Time').mean()         .fillna(0)         .reset_index()         .assign(delta_time = lambda x: x.Time.diff()))>>> new_df                 Time  Value delta_time0 2009-05-27 18:45:00    2.0        NaT1 2009-05-27 19:00:00    4.0   00:15:002 2009-05-27 19:15:00    1.0   00:15:003 2009-05-27 19:30:00    1.0   00:15:004 2009-05-27 19:45:00    0.0   00:15:005 2009-05-27 20:00:00    0.0   00:15:006 2009-05-27 20:15:00    0.0   00:15:007 2009-05-27 20:30:00    0.0   00:15:008 2009-05-27 20:45:00    2.0   00:15:00
随时随地看视频慕课网APP

相关分类

Python
我要回答