作者:SufiaLi | 来源:互联网 | 2022-12-03 09:20
我有一个pandas数据帧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
通过连接列名Qty
和列中的PR
整数值来创建新列HE
(列HE
始终具有整数值).
df2
基本上具有唯一组合的行,MastLoc, Loc and Type
并且列中的所有值Qty and HE
都已移动到使用列中的整数创建的新列HE
.
所以,我做了很多:
df['colQty'] = ['Qty' + str(x) for x in df['HE'].tolist()]
df['colPR'] = ['PR' + str(x) for x in df['HE'].tolist()]
我无法想出一个干净的方式来做任何进一步的事情.
1> WeNYoBen..:
使用pivot_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