如何为缺少的日期时间增加价值

时间:2019-12-10 01:54:53

标签: python pandas

我需要为缺少日期时间的步骤添加零。我知道简单数据的重新索引,但是对于具有datetime的数据,我认为我无法使用重新索引。

    {'dateTime': {0: '11/22/19 00:51:00',
  1: '11/22/19 00:52:00',
  2: '11/22/19 00:53:00',
  3: '11/22/19 00:54:00',
  4: '11/22/19 00:56:00',
  5: '11/22/19 00:57:00',
  6: '11/22/19 01:01:00'},
 'step': {0: 0, 1: 49, 2: 64, 3: 0, 4: 12, 5: 0, 6: 0}}

我想要的输出:

    dateTime  step
0   11/22/19 00:51:00     0
1   11/22/19 00:52:00    49
2   11/22/19 00:53:00    64
3   11/22/19 00:54:00     0
4   11/22/19 00:55:00     0
5   11/22/19 00:56:00    12
6   11/22/19 00:57:00     0
7   11/22/19 00:58:00     0
8   11/22/19 00:59:00     0
9   11/22/19 01:00:00     0
10  11/22/19 01:01:00     0

2 个答案:

答案 0 :(得分:2)

首先,您需要datetime列成为索引。一旦完成,您可以每60秒重新采样一次,然后重置索引。

d = .... # Your dataframe
d = d.set_index('dateTime')
d.index = pd.DatetimeIndex(d.index)  
d.resample('60s').sum().reset_index()
#              dateTime  step
#0  2019-11-22 00:51:00     0
#1  2019-11-22 00:52:00    49
#2  2019-11-22 00:53:00    64
#3  2019-11-22 00:54:00     0
#4  2019-11-22 00:55:00     0
#5  2019-11-22 00:56:00    12
#6  2019-11-22 00:57:00     0
#7  2019-11-22 00:58:00     0
#8  2019-11-22 00:59:00     0
#9  2019-11-22 01:00:00     0
#10 2019-11-22 01:01:00     0

答案 1 :(得分:1)

认为,您正在尝试将新的日期时间索引添加到索引中,并用0填充step中的值...如果这不是您的目标,请更正我。如果是这样,您也可以这样做,类似于@DYZ的答案:

df = df.set_index('dateTime')
df.index = pd.to_datetime(df.index)
new_index = pd.date_range(start = df.index[0], end = df.index[-1], freq = '60s')
df = df.reindex(new_index, fill_value=0)
df = df.reset_index()
df.columns = ['dateTime','step']

可能有些方法可以简化一些

输出:

              dateTime  step
0  2019-11-22 00:51:00     0
1  2019-11-22 00:52:00    49
2  2019-11-22 00:53:00    64
3  2019-11-22 00:54:00     0
4  2019-11-22 00:55:00     0
5  2019-11-22 00:56:00    12
6  2019-11-22 00:57:00     0
7  2019-11-22 00:58:00     0
8  2019-11-22 00:59:00     0
9  2019-11-22 01:00:00     0
10 2019-11-22 01:01:00     0