在Python中模拟在线决策

时间:2018-01-03 07:31:48

标签: python pandas

编辑:

我正在尝试模拟在线决策过程。在每次迭代中,我想从已知数据帧中读取一个新行并根据它做出决定。另外,我想保存我使用的数据帧的最后n行。不幸的是,即使遍历行也很慢。

我怎样才能更好地做到这一点?

import pandas as pd
import numpy as np
import time

t0 = time.time()
s1 = np.random.randn(2000000)
s2 = np.random.randn(2000000)
time_series = pd.DataFrame({'s1': s1, 's2': s2})
n = time_series.shape[0]

for t in range(1, n - 1):

    curr_data = time_series.iloc[t]


print time.time() - t0

OLD VERSION:

我有一个循环,在每次迭代中我都需要删除数据帧的第一行,并在另一行追加另一行。什么是最快的方法?

1 个答案:

答案 0 :(得分:1)

如果确实需要,可以使用:

for i in range(3):
    #remove first row
    df = df.iloc[1:]
    #e.g. append second row
    row = df.iloc[1]
    #append new row  
    df.loc[len(df.index)] = row

但如果检查this post这是最慢的解决方案:

  

6)更新空框架(例如一次使用loc一行

所以我猜这里应该是更好/更快的解决方案。第一步是尽可能避免循环。