将pandas数据框旋转为具有多层的长格式

号码:
|            |          Var1                 Var2                 
|------------|------|------|-----|------|------|-----|
|            | SPY  | AAPL | MSFT| SPY  | AAPL | MSFT 
|       Date |      |      |     |      |      |     |         
| 2011-01-03 | 30   | 30  | 30   | 30   | 30  | 30   | 
| 2011-01-04 | 30   | 30  | 30   | 21   | 30  | 30   | 
| 2011-01-05 | 30   | 30  | 30   | 30   | 30  | 30   | 


如何将上面具有多个层的数据框转换为如下所示的长格式?预期输出如下所示:

|            | firm | Var1 | Var2 |
|------------|------|------|------|
| Date       |      |      |      |    
| 2011-01-03 | AAPL |   30 |   30 | 
| 2011-01-04 | SPY  |   30 |   30 |
| 2011-01-05 | MSFT |   30 |   30 |  

样本数据 :

df = pd.DataFrame([{('Var1', 'SPY'): 30.0,
      ('Var1', 'AAPL'): 30.0,
      ('Var1', 'MSFT'): 30.0,
      ('Var2', 'SPY'): 30.0,
      ('Var2', 'AAPL'): 30.0,
      ('Var2', 'MSFT'): 30.0},
     {('Var1', 'SPY'): 30.0,
      ('Var1', 'AAPL'): 30.0,
      ('Var1', 'MSFT'): 30.0,
      ('Var2', 'SPY'): 21.0,
      ('Var2', 'AAPL'): 30.0,
      ('Var2', 'MSFT'): 30.0},
     {('Var1', 'SPY'): 30.0,
      ('Var1', 'AAPL'): 30.0,
      ('Var1', 'MSFT'): 30.0,
      ('Var2', 'SPY'): 30.0,
      ('Var2', 'AAPL'): 30.0,
      ('Var2', 'MSFT'): 30.0}]
Pygirl:

让我们重现第一个数据帧。

A:

            SPL AAPL MSFT
2011-01-03  30  30  30
2011-01-04  30  30  30
2011-01-05  30  30  30

B:

            SPL AAPL MSFT
2011-01-03  30  30  30
2011-01-04  21  30  30
2011-01-05  30  30  30

A.columns = pd.MultiIndex.from_product([['Var1'], A.columns])
B.columns = pd.MultiIndex.from_product([['Var2'], B.columns])
df = pd.concat([A, B], axis = 1)

您当前的数据框df

                Var1           Var2
            SPL AAPL MSFT   SPL AAPL MSFT
2011-01-03  30  30  30      30  30  30
2011-01-04  30  30  30      21  30  30
2011-01-05  30  30  30      30  30  30

码:

df = df.stack().reset_index().rename(columns={'level_0':'Date', 'level_1': 'firm'})
df.set_index(['Date'], inplace=True)

结果df:

            firm    Var1    Var2
Date            
2011-01-03  AAPL    30      30
2011-01-03  MSFT    30      30
2011-01-03  SPL     30      30
2011-01-04  AAPL    30      30
2011-01-04  MSFT    30      30
2011-01-04  SPL     30      21
2011-01-05  AAPL    30      30
2011-01-05  MSFT    30      30
2011-01-05  SPL     30      30

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将Pandas数据框旋转为具有混合数据类型和可能的双重值的新格式

R将多列旋转为长格式

使用列后缀将数据从宽转为长,以获取具有多个列的表(使用pivot_longer)

如何将 Pandas 数据框转为多级列

如何将具有多个聚合字段和多个索引字段的pandas数据框旋转到python中的sumIfs?

R 将长数据格式化为宽数据...但具有链接结果

将Pandas数据框放入具有特定格式的词典列表中的最有效方法

R:将宽数据转换为具有多个变量的长格式

将具有多列的宽数据集转换为长格式

将具有互不排斥类别的长数据转换为宽格式

将宽数据集转换为具有多列的长格式

将列名中具有多个键的数据框从宽到长重塑

将列表的数据框转换为长格式

当每组有多个值时,将 Pandas 数据框列从长转换为宽

如何一次旋转具有多个列的pandas数据框(时间序列)?

Pandas:尽管长格式的数据框中缺少值,但如何包含所有行的所有列?

R:如何将具有重复变量(时间)的宽数据框重新编码为长数据?

在长格式数据框中使用不带列名的熔化将宽格式转换为长格式

如何将pandas数据框转换为具有rdd属性的pyspark数据框?

如何基于R中的长格式数据帧创建具有不同列长的Markdown表?

旋转索引中具有重复值的数据框

在Pandas / Python中合并具有不同列长的数据

将具有多个标题的数据重新格式化为长格式,其中一个标题行成为新列中的数据

以具有不同列宽的固定格式保存 Pandas 数据框

R:根据复合列名称将数据框从宽格式重整为长格式

将数据框从长格式转换为宽格式并动态命名列

根据列中元素的值将长格式数据框重塑为宽格式

将JSON文件转换为具有定义格式的数据框

如何将具有两列的数据框重塑为宽格式?