Python 使用重复值转置列

Python 使用重复值转置列,python,pandas,numpy,dataframe,pandas-groupby,Python,Pandas,Numpy,Dataframe,Pandas Groupby,我有一个如下所示的数据框 df1 = pd.DataFrame({'Gender':['Male','Male','Male','Male','Female','Female','Female','Female','Male','Male','Male','Male','Female','Female','Female','Female'], 'Year' :[2008,2008,2009,2009,2008,2008,2009,2009,2008,2008,20

我有一个如下所示的数据框

df1 = pd.DataFrame({'Gender':['Male','Male','Male','Male','Female','Female','Female','Female','Male','Male','Male','Male','Female','Female','Female','Female'],
                'Year' :[2008,2008,2009,2009,2008,2008,2009,2009,2008,2008,2009,2009,2008,2008,2009,2009],
           'rate':[2.3,3.2,4.5,6.7,5.6,3.2,3.5,2.6,2.3,3.2,4.5,6.7,5.6,3.2,3.5,2.6],
           'Heading':['TNMAB123','TNMAB123','TNMAB123','TNMAB123','TNMAB123','TNMAB123','TNMAB123','TNMAB123',
                     'TNMAB456','TNMAB456','TNMAB456','TNMAB456','TNMAB456','TNMAB456','TNMAB456','TNMAB456'],
           'target':[31.2,33.4,33.4,35.2,35.2,36.4,36.4,37.2,31.2,33.4,33.4,35.2,35.2,36.4,36.4,37.2],
            'day_type':['wk','wkend','wk','wkend','wk','wkend','wk','wkend','wk','wkend','wk','wkend','wk','wkend','wk','wkend']})
正如您所看到的,所有列中都有重复的值

我想转置/旋转它们以获得如下所示的输出。虽然我试过下面的方法,但没用

df1.pivot(index='Year', columns='Heading', values='rate')
我希望我的输出如下所示,其中每年作为一行,该年的所有相应条目作为列

请注意,我没有填写值,因为表列结构更重要


你能帮帮我吗?

你可以试试这个。您可以在此处使用,并使用将多索引转换为单级索引

有几种方法可以将多索引转换为单级别。使用或

['''.joini代表df1中的i.列.列表] [“joini”代表df1中的i.列] ['''.joini代表df1中的i.列。到\u平面\u索引]
@他们很乐意帮忙;df1.pivot_tableindex=['Year','Gender',columns='Heading'。取消堆栈;df1.columns=[''.'.joini for i in df.columns.tolist]这将创建带有rate和target的列。@太好了,您忘记分配输出了。df1=df1.pivot_tableindex=['Year','Seven',columns='Heading',values='rate'。取消堆栈好的,我想你的答案中有一个错别字df而不是df1。@TheGreat Yes my bad:P,修复了它。实际上我想这是个小问题。当我有3列时,它不能正常工作。更新示例数据帧以重新生成
df1 = df1.pivot_table(index=['Year','Gender'],columns='Heading',values='rate').unstack()

df1.columns = ['_'.join(i) for i in df1.columns.tolist()]

df1 
      TDAS3_Female  TDAS3_Male  TNMAB123_Female  TNMAB123_Male  TSAD4_Female  TSAD4_Male  TWQE2_Female  TWQE2_Male
Year
2008           NaN         NaN              6.3            2.3           NaN         NaN           NaN         NaN
2009           NaN         NaN              7.1            3.2           NaN         NaN           2.1         4.5
2010           5.3         5.6              NaN            NaN           NaN         NaN           4.2         6.7
2011           3.6         3.2              NaN            NaN           2.9         3.5           NaN         NaN
2012           NaN         NaN              NaN            NaN           6.2         2.6           NaN         NaN