这段代码创建一个有10分钟时间范围索引的数据帧:
import pandas as pd
import datetime as dt
date_range = pd.date_range(end=dt.datetime(2017, 1, 6, 15, 00), periods=10, freq='10Min')
df = pd.DataFrame(index=date_range)
df['A'] = 1
print(df)
它的输出结果是:
A
2017-01-06 13:30:00 1
2017-01-06 13:40:00 1
2017-01-06 13:50:00 1
2017-01-06 14:00:00 1
2017-01-06 14:10:00 1
2017-01-06 14:20:00 1
2017-01-06 14:30:00 1
2017-01-06 14:40:00 1
2017-01-06 14:50:00 1
2017-01-06 15:00:00 1
我的问题是:
当索引之间存在间隙时,如何将以下三行中的列A设置为0?
例如,如果我们删除了一个特定行:
df = df[df.index != dt.datetime(2017, 1, 6, 14, 00)]
它的输出结果为:
A
2017-01-06 13:30:00 1
2017-01-06 13:40:00 1
2017-01-06 13:50:00 1
2017-01-06 14:10:00 1
2017-01-06 14:20:00 1
2017-01-06 14:30:00 1
2017-01-06 14:40:00 1
2017-01-06 14:50:00 1
2017-01-06 15:00:00 1
现在,在13:50之前缺少了10分钟的数据,因此以下的3个A行必须设置为0。
所以这将是期望的结果:
A
2017-01-06 13:30:00 1
2017-01-06 13:40:00 1
2017-01-06 13:50:00 1
2017-01-06 14:10:00 0
2017-01-06 14:20:00 0
2017-01-06 14:30:00 0
2017-01-06 14:40:00 1
2017-01-06 14:50:00 1
2017-01-06 15:00:00 1
有一个 Python 模拟器供你试用:https://repl.it/FaXZ/2
temp | temp.shift(1)
的调用。 - languitar