問題:如何創建一個允許迭代pandas HDFStore對象中多個列的生成器?HDFStore select_as_multiple生成器
我想創建一個熊貓HDFStore對象的包裝類。我試圖實現的功能之一是能夠通過給定的chunksize遍歷HDFStore中的各組列。許多機器學習算法可以運行on-line
,並且不需要一次全部數據。
我第一次嘗試是創造一個發電機的功能,並通過啓動和停止參數到HDFStore的選擇方法:
def iterate(self, key, chunksize=50000):
node = self.store.get_node(key)
nrows = node.table.nrows
current = 0
while current < nrows:
yield self.store.select(key, start=current, stop=current+chunksize)
current += chunksize
這工作得很好,我能遍歷存儲在單商店中的列。請注意,爲了測試,我將每列存儲在自己的表中。
我的下一步是使用HDFStore.select_as_multiple
將此概念擴展到多個表中的多個列。雖然沒有在文檔字符串,select_as_multiple
似乎接受start,stop參數,以及:被退回
>>> store.select_as_multiple(keys='MachineID', start=0, stop=50000)
<class 'pandas.core.frame.DataFrame'>
Int64Index: 50000 entries, 0 to 49999
Data columns:
MachineID 50000 non-null values
dtypes: int64(1)
只有50,000行,按要求。然而,當我經過1個多鍵/列的方法拉回的所有行:
>>> store.select_as_multiple(keys=['MachineID','YearMade'], start=0, stop=50000)
<class 'pandas.core.frame.DataFrame'>
Int64Index: 401125 entries, 0 to 1124
Data columns:
MachineID 401125 non-null values
YearMade 401125 non-null values
dtypes: int64(2)
是否有可能使用select_as_multiple
給拉了回來,而不是行的所有行的指定範圍內?
版本信息:
>>> pd.__version__
'0.10.1'
>>> tables.__version__
'2.4.0'
的Wooo!我對這個真棒項目的第一個貢獻。感謝您的幫助。 – Zelazny7 2013-03-17 19:01:53
歡迎打開公關如果你想:) – Jeff 2013-03-17 19:06:36
完成,請參閱上面的公關鏈接,請試一試,讓我知道這是如何工作。這個還沒有合併,但是現在這個是 – Jeff 2013-03-18 01:17:12