Pandas 在创建新列时转换数据帧

Pandas 在创建新列时转换数据帧,pandas,python-3.5,Pandas,Python 3.5,我有一个熊猫数据帧df,其值如下: HE PR MastLoc Loc Type Qty 1 2 E1 LocA TC 3 2 23 E1 LocA TB 18 3 17 E1 LocA TC 11 3 2 E1 LocB TC 3 24 3 E1 LocB TB 4 我想从上述数据帧创建以下数据帧df: Mast

我有一个熊猫数据帧
df
,其值如下:

HE  PR  MastLoc Loc     Type    Qty
1   2   E1      LocA    TC      3
2   23  E1      LocA    TB      18
3   17  E1      LocA    TC      11
3   2   E1      LocB    TC      3
24  3   E1      LocB    TB      4
我想从上述数据帧创建以下数据帧
df

MastLoc Loc     Type    Qty1    PR1   Qty2  PR2   Qty3  PR3  Qty24  PR24
E1      LocA    TC      3       2                 11    17      
E1      LocA    TB                    18    23              
E1      LocB    TC                                3     2       
E1      LocB    TB                                            4      3
新列是通过将列名称
quaty
PR
与列
HE
中的整数值连接起来创建的(列
HE
始终具有整数值)

df2
基本上有行具有唯一组合的
MastLoc、Loc和Type
,列
Qty和HE
中的所有值已移动到使用列
HE
中的整数创建的新列中

到目前为止,我已经做了:

df['colQty'] = ['Qty' + str(x) for x in df['HE'].tolist()]
df['colPR'] = ['PR' + str(x) for x in df['HE'].tolist()]

我无法找到一种干净的方法来做任何进一步的事情。

使用带有多个索引调整的
pivot\u table

s=pd.pivot_table(df,index=['MastLoc','Loc','Type'],columns=['HE'],values=['PR','Qty'],aggfunc='sum')
s.columns=s.columns.map('{0[0]}{0[1]}'.format) 
s
Out[895]: 
                   PR1   PR2   PR3  PR24  Qty1  Qty2  Qty3  Qty24
MastLoc Loc  Type                                                
E1      LocA TB    NaN  23.0   NaN   NaN   NaN  18.0   NaN    NaN
             TC    2.0   NaN  17.0   NaN   3.0   NaN  11.0    NaN
        LocB TB    NaN   NaN   NaN   3.0   NaN   NaN   NaN    4.0
             TC    NaN   NaN   2.0   NaN   NaN   NaN   3.0    NaN

使用带有多个索引调整的透视表

s=pd.pivot_table(df,index=['MastLoc','Loc','Type'],columns=['HE'],values=['PR','Qty'],aggfunc='sum')
s.columns=s.columns.map('{0[0]}{0[1]}'.format) 
s
Out[895]: 
                   PR1   PR2   PR3  PR24  Qty1  Qty2  Qty3  Qty24
MastLoc Loc  Type                                                
E1      LocA TB    NaN  23.0   NaN   NaN   NaN  18.0   NaN    NaN
             TC    2.0   NaN  17.0   NaN   3.0   NaN  11.0    NaN
        LocB TB    NaN   NaN   NaN   3.0   NaN   NaN   NaN    4.0
             TC    NaN   NaN   2.0   NaN   NaN   NaN   3.0    NaN

是否可以将其重新组织为:PR1、Qty1、PR2、Qty2等?@Zanam正在添加排序索引。像s=s.sort_index(level=1,axis=1)一样,是否可以将其重新组织为:PR1、Qty1、PR2、Qty2等?@Zanam正在添加sort_index。类s=s.sort_索引(级别=1,轴=1)