Python 如何将一列的值转换为列标题,将其他列的值转换为行?

Python 如何将一列的值转换为列标题,将其他列的值转换为行?,python,pandas,dataframe,Python,Pandas,Dataframe,这就是我的df的样子 A B C D E F xyz abc aa 100 qq brc,pqr,lmn xyz abc bb 150 qq lmn,brc,ppq xyz abc cc 80 qq lmn,pqr abc pqr cc 99 qq pqr,brc,lmn abc

这就是我的df的样子

    A      B     C      D      E      F
    xyz   abc    aa    100    qq     brc,pqr,lmn
    xyz   abc    bb    150    qq     lmn,brc,ppq
    xyz   abc    cc    80     qq     lmn,pqr
    abc   pqr    cc    99     qq     pqr,brc,lmn
    abc   pqr    aa    180    qq     brc,lmn,pqr
    abc   pqr    bb    200    qq     lmn,pqr,brc
这就是我想要的。我怎样才能达到同样的效果

A      B     aa     bb    cc      E      F
xyz   abc    100   150    80      qq     brc,pqr,lmn,ppq
abc   pqr    180   200    99      qq     brc,lmn,pqr
用于由以下人员创建的另一个数据帧:


感谢您的回复,但我得到的错误是“没有要聚合的数值类型”,因为数据类型是字符串值。我能做些什么?@Prachi-你可以使用
df.D=df.D.astype('int')
或者从
pd.到_numeric
的其他解决方案好的,我做到了。但是我的输出看起来不像我想要的。实际上,我得到了两次列'cc',值也分开了。我尝试了df.groupby(df.columns,axis=1).first(),但它也不起作用。@Prachi-没有一些空格像列是
'cc'
'cc'
?在我的解决方案之后,
print(df.columns.tolist())
是什么?@Prachi-谢谢,所以问题是
cc
有空间,所以需要在我的解决方案之前
df.C=df.C.str.strip()
'cc'
转换为
'cc'
f = lambda x: ','.join(set(z for y in x for z in y.split(',')))
df1 = df.groupby(['A','B']).agg({'E':'first', 'F': f})

df = df.pivot_table(index=['A','B'],
                    columns='C',
                    values='D',
                    aggfunc='mean').join(df1).reset_index()
print (df)
     A    B   aa   bb  cc   E                F
0  abc  pqr  180  200  99  qq      lmn,brc,pqr
1  xyz  abc  100  150  80  qq  lmn,ppq,brc,pqr