【发布时间】:2015-06-25 01:37:50
【问题描述】:
我正在尝试读取具有两行标题信息作为多索引的 .csv 文件,以便以后可以访问给定 2 个标识符的列。该文件看起来像这样(制表符分隔),NA 的值是故意这样的:
ind Human Human Human Mouse Mouse Mouse ...(null) Codon Freq minmax Codon Freq minmax ...0 ATG 12.5 -5.2 --- NA NA ...1 AAA 8.9 -25.5 --- NA NA ...2 GGA 16.5 12.4 ATG 11.9 6.5 ...
我可以用两行标题读取文件,但这会导致类“pandas.core.frame.DataFrame”的对象而不是“pandas.core.index.MultiIndex”:data = pd.read_csv('alignment.csv', sep="\t", header=[0,1])
当我尝试指定 index_col=0 时,正如文档中的一些示例所做的那样,我收到“IndexError: list index out of range”错误,这是几个相关问题的解决方案,但由于某种原因不适用于我。
接下来,我尝试以各种方式对数据进行子集化,但都失败了。我得到(我认为)最接近我想要的是通过做temp = data.ix[:,[("","ind"),("Human","minmax")]]
...这至少给了我一个正确尺寸的 DataFrame 并正确标记,但所有值都已替换为 NaN。使用 .loc 给了我一个关于排序不正确的错误,而且我根本无法让 .xs 工作。
本质上,我正在寻找一种基于物种和参数(例如人类和最小最大值)对数据集进行子集化的方法。我在这里查看了几个相关的问题,但还没有解决问题。我怎样才能做到这一点?
【问题讨论】: