有效地将单行添加到Pandas系列或DataFram

2024-05-23 15:09:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用熊猫来实时处理连续剧。每秒钟,我都需要在现有的系列中添加最新的观察结果。我的系列被组合成一个数据帧并存储在一个HDF5文件中。

我现在是这样做的:

>> existing_series = Series([7,13,97], [0,1,2]) 
>> updated_series = existing_series.append( Series([111], [3]) )

这是最有效的方法吗?我读过无数篇文章,但找不到任何关注高频数据效率的文章。

编辑:我刚读到模块shelve和pickle。似乎他们能达到我的目的,基本上把列表保存在磁盘上。因为我的列表很大,有没有办法不将完整的列表加载到内存中,而是高效地一次追加一个值?


Tags: 文件数据方法编辑列表文章hdf5series
1条回答
网友
1楼 · 发布于 2024-05-23 15:09:28

看看0.10中的新PyTables文档(即将发布),或者您可以从master获得。http://pandas.pydata.org/pandas-docs/dev/whatsnew.html

PyTables实际上非常擅长追加,并且每秒都可以向HDFStore写入数据。要存储数据帧表。然后,您可以以类似查询的方式选择数据,例如

store.append('df', the_latest_df)
store.append('df', the_latest_df)
....
store.select('df', [ 'index>12:00:01' ])

如果这一切都来自同一个过程,那么这将是伟大的工作。如果你有一个写作过程,然后另一个过程是阅读,这是有点棘手(但将正确工作取决于你正在做什么)。

另一个选项是使用消息传递从一个进程传输到另一个进程(然后追加到内存中),这样可以避免序列化问题。

相关问题 更多 >