【问题标题】:Pandas DataFrame: How to Create Multi Column IndexPandas DataFrame:如何创建多列索引
【发布时间】:2021-03-04 12:54:33
【问题描述】:

我有一个看起来与此类似的 pandas DataFrame:

          player     frameID    x          y  
  
0         Tom        0          1          3
1         Tom        1          2          3
2         Tom        2          1          3
3         John       0          4          2
4         John       1          3          1
5         John       2          2          2
6         Greg       0          5          3
7         Greg       1          3          2
8         Greg       2          2          1
.         .          .          .          .
.         .          .          .          .
.         .          .          .          .

我想将其格式化为如下所示:

          player  Tom           John          Greg
frameID    
                  x      y      x      y      x      y

0                 1      3      4      2      5      3
1                 2      3      3      1      3      2
2                 1      3      2      2      2      1
.                 .      .      .      .      .      .
.                 .      .      .      .      .      .
.                 .      .      .      .      .      .

但是,我不知道如何进行多索引。如您所见,我想取其中两列并将一列作为列上的索引,并将一列作为行上的索引。任何帮助将不胜感激。

【问题讨论】:

  • 顺便说一句:你为​​什么想要一个多索引?我发现几乎所有事情都可以用列值来代替(除非你需要更好的性能)
  • 数据为运动运动数据,每一行为一帧运动剧。我想要这种格式,因为我需要每帧所有玩家的位置用于聚类算法(即,在这种格式中,现在每一行都有我需要的数据)。

标签: python pandas dataframe


【解决方案1】:

让我们创建一个多级索引,然后使用stack + unstack 重塑数据框:

df.set_index(['frameID', 'player']).stack().unstack([1, 2])

player    Tom     John    Greg   
          x  y    x  y    x  y
frameID                       
0         1  3    4  2    5  3
1         2  3    3  1    3  2
2         1  3    2  2    2  1

【讨论】:

  • 不错!什么时候会使用多级(列)索引?
  • 感谢@anon01 来自pandas documentation MultiIndex 通常在数据具有逻辑相关结构时使用,因为它允许您以更简洁的方式进行分组、选择和重塑操作。我建议您查看文档,您也可以参考this answer,它很好地解释了何时使用多索引。
  • 伙计,你确实是救生员。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2022-11-27
  • 2019-04-13
  • 2016-05-03
  • 2021-11-13
  • 1970-01-01
  • 1970-01-01
  • 2016-11-07
  • 2017-03-07
相关资源
最近更新 更多