2013-09-19 3 views
5

Я новичок в pandas для python. У меня есть файл данных с несколькими ярлыками строк (в каждой строке) и метками столбцов (за столбец), как и следующие данные подсчетов наблюдений для трех разных животных (собака, летучая мышь, страус) при многократном времени записи (понедельник, день, ночь):Прочтите файл csv со многими названными метками столбцов с pandas

'' , ''  , colLabel:name , dog , bat  , Ostrich 
    '' , ''  , colLabel:genus , Canis , Chiroptera , Struthio, 
    '' , ''  , colLabel:activity, diurnal, nocturnal, diurnal 
    day , time of day, ''    ,  ,   ,   
    Monday , morning , ''   , 17  , 5  , 2 
    Monday , day  , ''   , 63  , 0  , 34 
    Monday , night  , ''   , 21  , 68  , 1 
    Friday , day  , ''   , 72  , 0  , 34 

Я хотел бы прочитать эти данные в Pandas, где иерархии организованы как строки, так и столбцы. Каков наилучший способ сделать это?

+0

отмечают, что родной формат '' to_csv'' немного отличается, что это в том, что метки столбцов в первые столбцы, и у вас нет этого дополнительного столбца) – Jeff

ответ

9

Вы можете использовать аргументы в header, index_col и tupleize_cols из read_csv:

In [1]: df = pd.read_csv('foo.csv', header=[0, 1, 2], index_col=[0, 1], tupleize_cols=False, sep='\s*,\s+') 

Примечание: в 0.13 tupelize=False будет по умолчанию, так что вам не нужно будет использовать.

Там немного немного подправив требуется, чтобы выйти имена уровня колонки:

In [2]: df.columns.names = df.columns[0] 

In [3]: del df[df.columns[0]] 

In [4]: df 
Out[4]: 
colLabel:name   dog   bat Ostrich 
colLabel:genus  Canis Chiroptera Struthio, 
colLabel:activity diurnal nocturnal diurnal 
day time of day 
Monday morning   17   5   2 
     day    63   0   34 
     night    21   68   1 
Friday day    72   0   34 
+1

возможно 'tupleize_cols = False', чтобы полученные индексы являлись фактическими объектами MultiIndex? :) –

+0

@PhillipCloud спасибо! только что пришел в этот вопрос :) Еще один взлом! –

+2

'' tupleize_cols = False'' по умолчанию в 0.13! (поэтому вы получите столбцы 'MultiIndex'' – Jeff

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

  • Нет связанных вопросов^_^