2015-06-25 9 views
0

Я пытаюсь прочитать CSV-файл с двумя строками информации заголовка в виде мультииндекса, так что я могу позже получить доступ к столбцу с учетом двух идентификаторов. Файл выглядит следующим образом (с разделителями табуляции), а также значения, которые NA преднамеренно таким образом:Подмножество Pandas csv/multiindex

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 для работы вообще.

По сути, я ищу способ подмножества набора данных на основе вида и параметра (например, человека и minmax). Я просмотрел несколько связанных вопросов здесь, но еще не смог решить проблему. Как я мог это достичь?

ответ

0

Хм ... мне кажется, что работает для меня ... какая версия Pandas/Python вы используете?

df= pd.read_clipboard(header = [0,1], index_col=0) 

df 
Out[389]: 
ind Human    Mouse    ... 
(null) Codon Freq minmax Codon Freq minmax ... 
0  ATG 12.5 -5.2 --- NaN NaN ... 
1  AAA 8.9 -25.5 --- NaN NaN ... 
2  GGA 16.5 12.4 ATG 11.9 6.5 ... 


df.Human.minmax 
df.Human.minmax 
Out[390]: 
0 -5.2 
1 -25.5 
2 12.4 
Name: minmax, dtype: float64 
+0

Вы правы, это похоже на проблему форматирования с моим файлом данных, который я пытался прочитать (и я думал, что был так осторожен с этим!). Он по-прежнему не читается как объект multiindex, но я могу хотя бы прочитать его с помощью index_col = 0 и подмножить его с .ix, как я и предполагал. Благодарю. – Emmett

Смежные вопросы