我希望创建一个固定行数(例如100行)的数据框。
数据框具有以下列:datetimeindex,收盘价,EMA5,EMA12。
当on_ticks函数运行时,我向其追加新行,将其压入底部,最旧的行被丢弃,从而保持数据帧的大小固定。 (所有行都上移1)
有什么建议吗?
答案 0 :(得分:1)
我认为您应该通过DataFrame.iloc
删除第一行,以便在将新行追加到底部之后按位置删除行,并添加DataFrame.copy
以避免可能的SettingWithCopyWarning
:
df = df.iloc[1:].copy()
如果要过滤最后100行:
df = df.iloc[-100:].copy()
答案 1 :(得分:0)
假设您的日期时间索引按升序排序,则可以按以下步骤进行操作
创建虚拟DataFrame
import pandas as pd
df = pd.DataFrame(np.random.rand(100,3), columns=list("ABC"))
df.set_index(pd.date_range("oct-27-2019", periods=100, freq="min"), inplace=True)
解决方案
## add new row for next minute
df.loc[df.iloc[-1].name + pd.Timedelta(1, "min")] = [0.1,0.1,0.1]
## remove the oldest row in the dataframe
df.drop(index=df.iloc[0].name, inplace=True)
df