gpt4 book ai didi

python - 尝试使用 Deque 来限制传入数据的 DataFrame ......建议?

转载 作者:行者123 更新时间:2023-12-03 19:51:15 25 4
gpt4 key购买 nike

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

大图:
我正在创建一个包含过去 26 天历史值的数据框,“无论是哪一天……”

困惑:
我认为我每分钟的数据都采用系列格式,然后我尝试使用 deque 限制 maxlen。然后我尝试将数据实现到数据框中。但是我只得到 NaN 值。

代码:

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

我怎样才能让它发挥作用?

麦克风

最佳答案

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

def select_values_of_the_last_twenty_six_days(old_data, new_data):
length = 5
twenty_six_day_before = (
pd.Timestamp.now(tz='Europe/Paris').round('D')
- pd.to_timedelta(26, 'D')
)
return (
pd.concat([old_data, new_data])
.loc[lambda x: x.index > twenty_six_day_before, :]
.iloc[-length:, :]
)
如果日期不在索引中:
def select_values_of_the_last_twenty_six_days(old_data, new_data):
length = 5
twenty_six_day_before = (
pd.Timestamp.now(tz='Europe/Paris').round('D')
- pd.to_timedelta(26, 'D')
)
return (
pd.concat([old_data, new_data])
# the following line is changed for values in a specific column
.loc[lambda x: x['column_with_date'] > twenty_six_day_before, :]
.iloc[-length:, :]
)
如果您不在法国,请不要忘记更改硬编码时区。 :-)

关于python - 尝试使用 Deque 来限制传入数据的 DataFrame ......建议?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37019929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com