【发布时间】:2015-06-18 23:41:50
【问题描述】:
我有一个 Pandas 数据框,并且每秒不断地添加一行数据,如下所示。
df.loc[time.strftime("%Y-%m-%d %H:%M:%S")] = [reading1, reading2, reading3]
>>>df
sensor1 sensor2 sensor3
2015-04-14 08:50:23 5.4 5.6 5.7
2015-04-14 08:50:24 5.5 5.6 5.8
2015-04-14 08:50:26 5.2 5.3 5.4
如果我继续这样做,最终我将开始遇到内存问题(每次它都会调用整个 DataFrame)。
我只需要保留 X 行数据。即在操作后,它将是:
>>>df
sensor1 sensor2 sensor3
(this row is gone)
2015-04-14 08:50:24 5.5 5.6 5.8
2015-04-14 08:50:26 5.2 5.3 5.4
2015-04-14 08:50:27 5.2 5.4 5.6
有没有一种方法可以指定最大行数,以便在添加任何后续行时,同时删除最旧的行而不用 “检查DataFrame的长度,如果DataFrame的长度> X,删除第一行,追加新行”?
像这样,但对于 Pandas DataFrame:https://stackoverflow.com/a/10155753/4783578
【问题讨论】:
-
不清楚为什么你需要继续追加,但如果你想施加限制,为什么不检查
len(df),一旦 len 达到限制就不要追加? -
你可以做的另一件事是在追加之后,如果长度大于你的限制,那么你只需分配一个切片,这样
df = df.iloc[-500:]会将最后 500 行分配回 df -
-
为什么不用新行替换旧行而不是追加?您可能每次都需要进行排序,但我认为这仍然会比扩展和缩小数据框的操作更快。和往常一样,一个带有代码的小示例数据框可以更容易地获得一个好的答案。
标签: python pandas dataframe data-analysis real-time-data