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
添加回答
舉報