Python 基于组和动态列名在数据集中旋转列

Python 基于组和动态列名在数据集中旋转列,python,pandas,pivot-table,pandas-groupby,Python,Pandas,Pivot Table,Pandas Groupby,我在python中有一个数据帧,如下所示: (前两列mygroup1和mygroup2是groupby列) 我想透视表(tname列中的值),它应该是以下列的名称,这些列的名称与从其他列(@dt、@num和@vec)获取的tname值连接在一起 我正在尝试使用pandas pivot表进行pivot,但无法获得我真正想要的以下格式。我将感谢任何帮助 您可以执行以下操作: new_df = df.set_index(['mygroup1','mygroup2','tname']).unstack(

我在python中有一个数据帧,如下所示: (前两列mygroup1和mygroup2是groupby列)

我想透视表(tname列中的值),它应该是以下列的名称,这些列的名称与从其他列(@dt、@num和@vec)获取的tname值连接在一起

我正在尝试使用pandas pivot表进行pivot,但无法获得我真正想要的以下格式。我将感谢任何帮助

您可以执行以下操作:

new_df = df.set_index(['mygroup1','mygroup2','tname']).unstack('tname')
new_df.columns = [f'{y}{x}' for x,y in new_df.columns]
new_df = new_df.sort_index(axis=1).reset_index()
输出:

  mygroup1 mygroup2 alpha@dt  alpha@num alpha@vek beta@dt  beta@num beta@vek
0        a        p      may        6.0         a     NaN       NaN      NaN
1        b        q     june        8.0         b     NaN       NaN      NaN
2        c        r      NaN        NaN       NaN     may       9.0        c
3        d        s      NaN        NaN       NaN    june      11.0        d

谢谢你,广!我得到了大部分的部分,除了你在列创建中放入的函数“f”。它叫什么,到底在做什么。我从来没见过!感谢againIt的f-string,它与Python3中的format函数类似+
new_df = df.set_index(['mygroup1','mygroup2','tname']).unstack('tname')
new_df.columns = [f'{y}{x}' for x,y in new_df.columns]
new_df = new_df.sort_index(axis=1).reset_index()
  mygroup1 mygroup2 alpha@dt  alpha@num alpha@vek beta@dt  beta@num beta@vek
0        a        p      may        6.0         a     NaN       NaN      NaN
1        b        q     june        8.0         b     NaN       NaN      NaN
2        c        r      NaN        NaN       NaN     may       9.0        c
3        d        s      NaN        NaN       NaN    june      11.0        d