也有类似的问题,但没有一个能处理我的数据帧在HDFStore中的情况。在
我需要将时间戳/键/值项的列表转换为数据帧,并将其存储为在时间戳上索引的多个数据帧,然后将其保存在HDFStore中。在
示例代码:
from pandas import HDFStore
from pandas import DataFrame
store = HDFStore('xxx', driver="H5FD_CORE")
for i, k, v in ((0, 'x', 5), (1, 'y', 6)):
if k not in store:
store[k] = DataFrame()
store[k].set_value(i, 'value', v)
运行此代码后,store['x']
将保持为空。在
所以很明显这是有原因的,我不知道这些东西是怎么工作的。如果我理解如何在HDFStore中附加表/数据帧,我当然可以理解其中的逻辑。在
我还可以将数据帧保存在内存中,在某种字典中,然后在末尾将它们分配给HDFStore。不知怎么的,我有一个错误的想法,认为这样做可以节省记忆,也许我也错了。在
我想澄清一下,但我还没找到代表。如果没有更多的背景,我很难说你的方法是否明智,但我倾向于在几乎所有的情况下说不。如果我错了请纠正我,但你要做的是:
[(timeA, key1, value1), (timeB, key1, value2), (timeC, key2, value1)]
store[key1] = DataFrame([value1, value2], index=[timeA, timeB])
store[key2] = DataFrame([value1], index=[timeC])
对吗?在
如果是这样,我建议您对存储键进行某种“过滤”,创建数据帧,然后将整个数据帧写入存储,如下所示:
我很有信心有一种更有效的方法来做到这一点,包括行数和资源,但这是我印象最深的Python。如果
dataTuples
对象很大(比如>;=RAM),那么我的答案可能需要改变。在一般来说,这里的想法是在写入存储之前完整地创建每个数据帧。当我在这里结束时,我意识到您也可以做您选择的事情,而您缺少的是需要使用一个table format来指定存储,这将启用附加。当然,一次追加一行可能不是一个好主意。在
相关问题 更多 >
编程相关推荐