簡體   English   中英

我如何(或應該)將此DataFrame的DataFrame轉換為MultiIndexed DataFrame?

[英]How can I (or should I) transform this DataFrame of DataFrames into a MultiIndexed DataFrame?

我有一個像這樣的Series 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    ...
...    ...   ...   ...   ...   ...   ...   ...   ...   ...   ...

state1state2等都是各個狀態的DataFrame。 sym1sym2等都是症狀時間序列。 這使我可以執行以下操作:

>>> 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
              ...    ...

我有兩個問題:

  1. 將當前數據結構轉換為使用MultiIndices的新數據結構的好處是什么? 據我所知,您可以將高維數據有效地存儲在單個DataFrame中,從而減少了冗余/復雜度,從而可以在較小的數據結構上實現更快的操作。 那是對的嗎?
  2. 如何准確地轉換已經擁有的數據結構?

謝謝!

對於第一個問題,我認為您是對的,再加上Pandas為分層索引的數據框(例如切片器)提供了方便的索引方法。

關於如何將數據結構轉換為按層次結構索引的數據框,首先,需要將每個狀態的數據框合並在一起以形成水平結構,然后可以使用轉置和堆棧將其重新排列為垂直結構。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM