5

我对 python 的 pandas 是全新的。我有一个数据文件,其中包含多个行标签(每行)和列标签(每列),如下面的 3 种不同动物(狗、蝙蝠、鸵鸟)在多个记录时间(星期一早上、白天、晚上)的观察计数数据):

   ''    ,    ''      , 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,其中行和列都是分层组织的。这样做的最佳方法是什么?

4

1 回答 1

9

您可以使用header,index_coltupleize_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.13tupelize=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
于 2013-09-19T21:35:16.217 回答