Python 按两列对PyTables表进行排序

Python 按两列对PyTables表进行排序,python,sorting,pytables,Python,Sorting,Pytables,我想对PyTables表进行排序。在单个列上排序很容易:我可以为我要排序的列创建一个cs_索引,然后使用Table.itersorted()以排序的顺序获取行,然后逐行插入到新表中) 问题是我想对一个表按两列进行排序 该表的格式如下: chr start end ------------------ chr1 1000 2000 chr1 1500 3000 chr2 1000 5000 chr2 1200 2000 在本例中,顺序是正确的,即首

我想对PyTables表进行排序。在单个列上排序很容易:我可以为我要排序的列创建一个cs_索引,然后使用Table.itersorted()以排序的顺序获取行,然后逐行插入到新表中)

问题是我想对一个表按两列进行排序

该表的格式如下:

chr   start   end    
------------------
chr1  1000    2000
chr1  1500    3000
chr2  1000    5000
chr2  1200    2000
在本例中,顺序是正确的,即首先按“chr”排序,然后按“start”排序。是否有可能以优雅的方式实现这种两列排序


另外,我知道我可以通过提取列进行排序,然后使用numpy.lexsort对内存中的numpy数组进行排序,但是我正在处理的数据有时可能太大(可能有数十亿行).

我不认为您要找的是在Pytables中实现的。所以你可能得自己做。我的建议是:在两列上都放置一个csi_索引,当您需要以排序方式处理数据时,您需要自己实现迭代。将按一列排序的足够小的位拉入内存,然后进行处理(相对于另一列排序并处理数据)

希望这有帮助