这是我的数据结构,“日期时间”是唯一的,并用作具有700,000行不同日期的熊猫数据框的索引。
| DateTime | Open | High | Low | Close | indicator |
2018-10-23 12:00:00 61.61 61.86 61.6 61.84 0
2018-10-23 12:05:00 61.82 61.98 61.76 61.98 0
2018-10-23 12:10:00 61.98 62.01 61.9 62.01 0
2018-10-23 12:15:00 62.05 62.15 62.01 62.02 0
2018-10-23 12:20:00 62.04 62.13 62.03 62.07 0
2018-10-23 12:25:00 62.08 62.19 62.05 62.19 1
2018-10-23 12:30:00 62.19 62.19 62.11 62.15 0
2018-10-23 12:35:00 62.13 62.24 62.12 62.22 1
2018-10-23 12:40:00 62.23 62.34 62.22 62.29 0
2018-10-23 12:45:00 62.3 62.37 62.21 62.25 0
我想切片仅包含符合以下条件的行的数据框- 1.行的日期必须与指标值为1的行相同 2.仅对时间上向前的行进行切片
代码大约需要10到12秒才能执行,是否可以缩短时间?
我的Python代码-
# data is a pandas dataframe as above
arr = []
temporarydf = data[data['indicator'] == 1]
for i in range(len(temporaryDF)):
sliceddata = data[(data['DateTime'] > temporaryDF['DateTime'].iloc[i]) &
(data['DateTime'].dt.date ==
temporaryDF['DateTime'].iloc[i].date())]
arr.append(sliceddata)
谢谢。
答案 0 :(得分:0)
您不必要地循环,因为数据是一类独特的熊猫,其中存储了所有数据。通过循环,您可以重写temporarydf,即循环的时间。您可以尝试排除for循环及其外部的内容。