2 回答
TA贡献1796条经验 获得超7个赞
你可以在这样的单行中使用unstack来做到这一点。
df.set_index(["col1", "col2", "PARMAM_NAME"])["PARMAM_VALUE"].unstack().reset_index()
基本上,我将其他列放在索引的开头(col1
, col2
),然后是要旋转的列(PARMAM_NAME
)。之后,我将最后一个索引放在PARMAM_VALUE
. 最后,我将索引重置为移动col1
并col2
从索引返回到数据框。
虽然,如果你对pivot_table 没问题,你也可以这样做:
df.pivot_table("PARMAM_VALUE", ["col1", "col2"], "PARMAM_NAME").reset_index()
TA贡献1900条经验 获得超5个赞
使用DataFrame.set_indexwith append=TrueforMultiIndex和 reshape by Series.unstack,然后删除不必要的列并加入原始 by DataFrame.join:
df1 = df.set_index('PARMAM_NAME', append=True)['PARMAM_VALUE'].unstack()
df = df.drop(['PARMAM_NAME','PARMAM_VALUE'],axis=1).join(df1)
print (df)
col1 col2 a b c d
0 1 1 100.0 NaN NaN NaN
1 2 2 NaN 200.0 NaN NaN
2 3 3 NaN NaN 300.0 NaN
3 4 4 NaN NaN NaN 400.0
添加回答
举报