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