Python 正在尝试使用Deque限制传入数据的数据帧。。。建议?

Python 正在尝试使用Deque限制传入数据的数据帧。。。建议?,python,pandas,nan,quantitative-finance,Python,Pandas,Nan,Quantitative Finance,我从集合中导入了deque以限制数据帧的大小。输入新数据时,应逐步删除旧数据 大局: 我正在创建一个从“无论是哪一天……”开始的前26天历史价值的数据框架 混乱: 我想我每分钟的数据都是一系列的格式,然后我试图用deque限制maxlen。然后我尝试将数据实现到一个数据帧中。然而,我只是得到了一个值 代码: 我怎样才能让它工作 Mike如果我正确理解了这个问题,您希望保留过去26天的所有值。以下功能对您来说是否足够 def选择最近二十六天的值(旧数据、新数据): 长度=5 前二十六天=( pd.

我从集合中导入了deque以限制数据帧的大小。输入新数据时,应逐步删除旧数据

大局: 我正在创建一个从“无论是哪一天……”开始的前26天历史价值的数据框架

混乱: 我想我每分钟的数据都是一系列的格式,然后我试图用deque限制maxlen。然后我尝试将数据实现到一个数据帧中。然而,我只是得到了一个值

代码:

我怎样才能让它工作


Mike

如果我正确理解了这个问题,您希望保留过去26天的所有值。以下功能对您来说是否足够

def选择最近二十六天的值(旧数据、新数据):
长度=5
前二十六天=(
pd.Timestamp.now(tz='Europe/Paris').round('D'))
-pd.to_timedelta(26,'D')
)
返回(
pd.concat([旧数据,新数据])
.loc[lambda x:x.index>二十六天前,:]
.iloc[-长度:,:]
)
如果日期不在索引中:

def选择最近二十六天的值(旧数据、新数据):
长度=5
前二十六天=(
pd.Timestamp.now(tz='Europe/Paris').round('D'))
-pd.to_timedelta(26,'D')
)
返回(
pd.concat([旧数据,新数据])
#下一行针对特定列中的值进行了更改
.loc[lambda x:x['column_with_date']>二十六天前,:]
.iloc[-长度:,:]
)

如果您不在法国,请不要忘记更改硬编码时区。:-)

你能修复代码的缩进吗?代码中的
数据是什么,我指的是函数的输入?如果有一个示例输入、错误输出和期望输出,这将非常有帮助。换句话说,a将只在deque的末尾附加名称数据所指向的对象。你想用它吗?或者更好,只要
data=deque(data,maxlen=length)
。不过,在这里使用deque似乎是一个XY问题。我确信
DataFrame
s提供了限制到所需大小的方法。您找到解决方案了吗?我也在寻找同样的答案?@shalini garg我知道你为此筹集了一笔赏金。但这个问题本身缺乏关于输入数据的细节。除非显示输入,否则这将成为一个难以解决的问题。如果您有类似的问题,那么可能会提出一个带有有效输入/输出示例的单独问题?感谢您的回答,但它仍然没有自动截断数据(如dequeuI中的数据)的dataframe使用最终的
iloc
编辑代码,允许您选择最后5个元素。这是你想要的吗?如果少于5行,它们都将被选中。但它不会像出列那样截断数据。这只是查询选项您可以分享一些数据示例吗?没有它,很难理解要做的工作。
import numpy as np
import pandas as pd
from collections import deque

def initialize(context):
    context.stocks = (symbol('AAPL'))

def before_trading_start(context, data):
    data = data.history(context.stocks, 'close', 20, '1m').dropna()
    length = 5
    d = deque(maxlen = length)
    data = d.append(data)
    index = pd.DatetimeIndex(start='2016-04-03 00:00:00', freq='S', periods=length)
    columns = ['price']
    df = pd.DataFrame(index=index, columns=columns, data=data)

    print df