我想将数据框重塑为具有两个级别的列,而不指定子级别的名称。例如,最初我的数据如下所示,索引为“日期”和“产品”,然后是一些列: a bdate product 2011-11 foo 1. 2.1 2011-12 foo 2.432 2.3 2012-01 bar 0.4 1.7 2012-01 foo 0.84 1.8 2014-06 bar 0. 2. 2014-07 bar 1.68 3. 请注意,每个日期有一行,产品组合(索引是唯一的)。我想将其重塑为单个索引日期,将产品移动到列级别: foo bar a b a bdate 2011-11 1. 2.1 NaN NaN2011-12 2.432 2.3 NaN NaN2012-01 0.84 1.8 0.4 1.72014-06 NaN NaN 0. 2. 2014-07 NaN NaN 1.68 3. 我不确定如何编写数据透视表,因为列名 a 和 b 不是固定的,并且每次此过程运行时可能或多或少。
1 回答

湖上湖
TA贡献2003条经验 获得超2个赞
使用unstack和swaplevel:
df.unstack(1).swaplevel(1,0, axis=1).sort_index(1)
product bar foo
a b a b
date
2011-11 NaN NaN 1.000 2.1
2011-12 NaN NaN 2.432 2.3
2012-01 0.40 1.7 0.840 1.8
2014-06 0.00 2.0 NaN NaN
2014-07 1.68 3.0 NaN NaN
添加回答
举报
0/150
提交
取消