gpt4 book ai didi

python - 我如何(或者应该)将 DataFrame 的 DataFrame 转换为多索引 DataFrame?

转载 作者:太空宇宙 更新时间:2023-11-03 17:14:20 27 4
gpt4 key购买 nike

我有一个像这样的系列数据帧的数据帧:

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

我有 2 个问题:

  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

关于python - 我如何(或者应该)将 DataFrame 的 DataFrame 转换为多索引 DataFrame?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33785507/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com