为了账号安全,请及时绑定邮箱和手机立即绑定

Python Pandas:如何在没有 pivot() 的情况下解开?

Python Pandas:如何在没有 pivot() 的情况下解开?

潇潇雨雨 2022-07-26 10:56:10
我有一个数据框:df = pd.DataFrame({    "col1":[1,2,3,4],    "col2":[1,2,3,4],    "PARMAM_NAME":["a", "b", "c", "d"],    "PARMAM_VALUE":[100, 200, 300, 400],})我希望它转换为:有没有一种简单的方法可以做到这一点?
查看完整描述

2 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

你可以在这样的单行中使用unstack来做到这一点。

df.set_index(["col1", "col2", "PARMAM_NAME"])["PARMAM_VALUE"].unstack().reset_index()

基本上,我将其他列放在索引的开头(col1col2),然后是要旋转的列(PARMAM_NAME)。之后,我将最后一个索引放在PARMAM_VALUE. 最后,我将索引重置为移动col1col2从索引返回到数据框。

虽然,如果你对pivot_table 没问题,你也可以这样做:

df.pivot_table("PARMAM_VALUE", ["col1", "col2"], "PARMAM_NAME").reset_index()


查看完整回答
反对 回复 2022-07-26
?
梵蒂冈之花

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


查看完整回答
反对 回复 2022-07-26
  • 2 回答
  • 0 关注
  • 82 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信