2016-05-28 60 views
2

我有一個HDF5文件,其中包含一個帶有列名的2D表格。它在HDFView中顯示爲當我掠奪此對象時稱爲results是否有可能從Python中的HDF5文件中的複合數據集中讀取字段名稱?

事實證明,results是一個「複合數據集」,一個一維數組,其中每個元素是一行。下面是它的性能,如HDFView顯示:

Dataset properties

我能得到這個對象的句柄,我們稱之爲res

的列名是V2ptR2pt

我可以讀取整個陣列作爲數據,以及可以讀取與

res[0,...,"V2pt"]. 

這一個元件將返回第一行中的數列V2pt。與1更換0將返回第二行值等

,如果我知道colunm命名先驗工作。但我不知道。

我只想獲得整個數據集的列名。我怎樣才能做到這一點?

我看到在HDF5文檔中的HDF5 documentation中有get_field_info函數,但我在h5py中發現沒有這樣的函數。

我擰了嗎?

更妙的是閱讀此表作爲大熊貓數據幀的解決方案......

回答

4

這是很容易在h5py做,工作就像在NumPy的複合類型。 如果res是您的數據集的句柄,則res.dtype.fields.keys()將返回所有字段名稱的 列表。

如果你需要知道一個特定的dtype,像res.dtype.fields['V2pt']會給它。

+0

約翰,謝謝你的回答。但是,我有兩個後續問題。 – germ

+0

1.返回的列表與表格的順序不同。我想這意味着我必須遍歷列表並獲取每列而不是res [...]。 2.我有另外一張桌子,你的方法只給出兩列,比方說第一張是'小結果'。實際上,該表有更多的列,在HDF5View中顯示爲「次要結果 - >上 - >參數1」。這些似乎是指一些其他表。任何想法如何獲得這些??? – germ

+0

dtype.fields返回一個字典對象,這會擾亂排序。你可以這樣做:dtype.names,它將返回一個字段名的有序元組。我不是那些缺少的專欄。它是複合類型的複合類型嗎?在這種情況下,您需要一些代碼來獲取所有字段名稱的平面列表。 –

相關問題