我是蟒蛇皮的新手。我有一个数据文件,其中包含多个行标签(每行)和列标签(每列),如下列数据,包括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,其中行和列都是按层次结构组织的。这样做的最佳方式是什么?
答案 0 :(得分:9)
您可以使用read_csv
的header
,index_col
和tupleize_cols
个参数:
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