我将尝试处理一个 pandas 多索引数据帧,其外观如下:
我希望你能做到这一点:
end ref|alt
chrom start
chr1 3000714 3000715 T|G
3001065 3001066 G|T
3001110 3001111 G|C
3001131 3001132 G|A
我希望你能做到这一点:
df.loc[('chr1', slice(3000714, 3001110))]
出现以下错误:
无法使用这些索引器[1204741]对 进行切片索引
df.index.levels[1].dtype
返回 dtype('int64')
,所以应该可以使用整数切片吧?
此外,关于如何高效地进行此类切片查询,任何评论都将是有价值的,因为数据帧有1200万行,我需要对其进行大约7000万次此类查询。
level[0]
索引中有23个项目,而level[1]
索引中有1260万个项目),通过将数据框拆分为第一个索引上的字典,可以获得更大的速度提升。在我的完整数据框上,df.loc(axis=0)[('chr1', slice(3000714, 3001110))]
方法每次循环需要218毫秒,而制作字典并执行dfs['chr1'].loc[3000714:3001110]
只需要95.7微秒。再次感谢! - Mike D