我有一个DataFrames系列的DataFrame,如下所示:
state1 state2 state3 ...
sym1 sym2 sym3 sym1 sym2 sym3 sym1 sym2 sym3 ...
date1 1 2 3 4 5 6 7 8 9 ...
date2 10 11 12 13 14 15 16 17 18 ...
date3 19 20 21 22 23 24 25 26 27 ...
... ... ... ... ... ... ... ... ... ... ...
state1
,state2
等都是各州的数据框架。 sym1
,sym2
等都是症状时间序列。这允许我做这样的事情:
>>> df['Alabama']['Chills']
2012-07-01 58
2012-07-02 64
2012-07-03 61
2012-07-04 23
2012-07-05 48
2012-07-06 63
2012-07-07 33
2012-07-08 55
2012-07-09 56
2012-07-10 39
2012-07-11 61
2012-07-12 28
2012-07-13 24
2012-07-14 51
2012-07-15 59
2012-07-16 75
2012-07-17 52
2012-07-18 61
2012-07-19 65
2012-07-20 40
2012-07-21 56
2012-07-22 13
2012-07-23 44
2012-07-24 23
2012-07-25 28
2012-07-26 29
2012-07-27 18
2012-07-28 16
2012-07-29 42
2012-07-30 53
...
2014-06-02 143
2014-06-03 133
2014-06-04 102
2014-06-05 139
2014-06-06 119
2014-06-07 74
2014-06-08 180
2014-06-09 136
2014-06-10 135
2014-06-11 106
2014-06-12 73
2014-06-13 102
2014-06-14 75
2014-06-15 57
2014-06-16 234
2014-06-17 143
2014-06-18 182
2014-06-19 115
2014-06-20 184
2014-06-21 171
2014-06-22 77
2014-06-23 211
2014-06-24 202
2014-06-25 95
2014-06-26 137
2014-06-27 98
2014-06-28 138
2014-06-29 165
2014-06-30 136
2014-07-01 43
Freq: D, Name: Chills, dtype: int64
但是,我不确定这是安排这样的数据的最佳方式。我在看MultiIndices,这可以让我做这样的事情:
state1 sym1 date1 1
date2 10
date3 19
sym2 date1 2
date2 11
date3 20
sym3 date1 3
date2 12
date3 21
state2 sym1 date1 4
date2 13
... ...
我有两个问题:
谢谢!
答案 0 :(得分:1)
对于第一个问题,我认为你是对的,加上Pandas为分层索引数据框提供了方便的索引方法,比如Slicers。
关于如何将数据结构转换为分层索引数据帧,首先,您需要将每个状态的数据帧合并在一起以形成水平结构,然后您可以使用转置和堆栈重新排列为垂直结构。
In [95]: df
Out[95]:
state1 state2 state3
sym1 sym2 sym3 sym1 sym2 sym3 sym1 sym2 sym3
0
date1 1 2 3 4 5 6 7 8 9
date2 10 11 12 13 14 15 16 17 18
date3 19 20 21 22 23 24 25 26 27
In [96]: df.T.stack()
Out[96]:
state1 sym1 date1 1
date2 10
date3 19
sym2 date1 2
date2 11
date3 20
sym3 date1 3
date2 12
date3 21
state2 sym1 date1 4
date2 13
date3 22
sym2 date1 5
date2 14
date3 23
sym3 date1 6
date2 15
date3 24
state3 sym1 date1 7
date2 16
date3 25
sym2 date1 8
date2 17
date3 26
sym3 date1 9
date2 18
date3 27
dtype: int64