将多索引转换为Pandas

发布于 2025-01-23 16:01:57 字数 236 浏览 0 评论 0原文

我想知道如何在熊猫数据框架中执行以下转换。我不知道如何解决这个问题。这个想法是将索引级别0设置为级别0列,其余列将其放入适当的主列

“

“

I would like to know how to perform the below transformation in a pandas dataframe. I have no idea how to tackle this. The idea is to take the index level 0 and set it as level 0 column with the rest of the columns place into the appropiated main column

initial dataframe

final dataframe

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

猫腻 2025-01-30 16:01:57

尝试使用set_indexunstackswaplevel

df_out = df.set_index(df.groupby(level=0).cumcount()+1, append=True)\
           .reset_index(level=1)\
           .rename(columns={'level_1':'ident'})\
           .unstack(0)\
           .swaplevel(0,1, axis=1)\
           .sort_index(axis=1)
df_out

输出:

          A                        B                         C                 
       city ident population    city ident population     city ident population
1        NY     1      57578  London     4     543534   Berlin     7    5257537
2        LA     2    8767867   Paris     5      25725   Madrid     8      53755
3  Valencia     3    8767678  Beijin     6     275275  Belfast     9     354354

Try this reshaping the dataframe using set_index, unstack and swaplevel:

df_out = df.set_index(df.groupby(level=0).cumcount()+1, append=True)\
           .reset_index(level=1)\
           .rename(columns={'level_1':'ident'})\
           .unstack(0)\
           .swaplevel(0,1, axis=1)\
           .sort_index(axis=1)
df_out

Output:

          A                        B                         C                 
       city ident population    city ident population     city ident population
1        NY     1      57578  London     4     543534   Berlin     7    5257537
2        LA     2    8767867   Paris     5      25725   Madrid     8      53755
3  Valencia     3    8767678  Beijin     6     275275  Belfast     9     354354
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文