我需要为缺少日期时间的步骤添加零。我知道简单数据的重新索引,但是对于具有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
答案 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