python - 将多级索引的第一级旋转为多级列的第一级

标签 python pandas indexing pivot multi-level

我有一个像这样的多级索引数据框:

indx = [('location', 'a'), ('location', 'b'), ('location', 'c'), ('location2', 'a'), ('location2', 'b'), ('location2', 'c')]
indx = pd.MultiIndex.from_tuples(indx)
col = ['S1','S2','S3']
df = pd.DataFrame(np.random.randn(6, 3), index=indx, columns=col)

df

                   S1        S2        S3
location  a -0.453549 -0.079797  0.581657
          b -0.458573 -0.732625 -2.277674
          c  0.874403  0.459590 -1.220271
location2 a -1.418821  0.847556  0.665808
          b  1.321825 -0.150274  0.507685
          c  0.894865 -0.502577  2.460591

我正在尝试将索引的第一级移动为多级列的第一级,如下所示:

header = [np.array(['location','location','location','location2','location2','location2']),
np.array(['S1','S2','S3','S1','S2','S3'])]
df = pd.DataFrame(np.random.randn(3, 6), index=['a','b','c'], columns = header )

df

   location                     location2                    
         S1        S2        S3        S1        S2        S3
a  1.225889 -0.547848 -0.413482 -1.038456 -1.055484 -0.143620
b -1.278012  0.403767 -0.298525  0.198157  0.327973 -0.088555
c -1.152128  0.209956  0.939142  0.458412  1.207760 -0.091029

有什么想法吗?

最佳答案

您想要unstack:

df.unstack(level=0).swaplevel(0,1, axis=1).sort_index(axis=1)

输出:

   location                     location2                    
         S1        S2        S3        S1        S2        S3
a  0.022553  0.485896 -0.421144  1.836187 -0.354247 -1.744599
b  0.099465 -0.531600  0.165415 -0.022424  0.286443 -0.356408
c  0.660913  1.071645  1.803176 -0.514787 -0.704810  0.797522

关于python - 将多级索引的第一级旋转为多级列的第一级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69841895/

相关文章:

python - 从字符串中解析日期并使用 Sqlalchemy tosqlite 插入

python - 在Python中初始化两个变量以指向相同的引用

URL 的数据库索引

python - NumPy 数组中元素的索引

python - 如何查看每个单元格在 Jupyter 笔记本中运行的时间?

python 和 Basemap 并从 View 中删除墨西哥/加拿大

python - Pandas如何过滤同一列中的空值和零值

python - 将字符串转换为没有日期的 Pandas 时间戳

python - 获取 pandas 数据框中出现特定值的第一个月和最后一个月

python - 用整数替换 pandas DataFrame 的字符串元素