固定行数的数据框

时间:2019-10-27 16:15:50

标签: python pandas dataframe

我希望创建一个固定行数(例如100行)的数据框。

数据框具有以下列:datetimeindex,收盘价,EMA5,EMA12。

当on_ticks函数运行时,我向其追加新行,将其压入底部,最旧的行被丢弃,从而保持数据帧的大小固定。 (所有行都上移1)

有什么建议吗?

2 个答案:

答案 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