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

如何转换数据框,以使列值成为行值

如何转换数据框,以使列值成为行值

侃侃无极 2021-04-08 12:24:31
我有以下数据框,如下所示:df = pd.DataFrame({'fruit': ['berries','berries', 'berries', 'tropical', 'tropical','tropical','berries','nuts'],            'code': [100,100,100,200,200, 300,400,500],           'subcode': ['100A', '100B', '100C','200A', '200B','300A',            '400A', '500A']})    code    fruit   subcode  0 100     berries 100A  1 100     berries 100B  2 100     berries 100C  3 200     tropica 200A  4 200     tropical 200B  5 300     tropical 300A  6 400     berries 400A  7 500     nuts    500A我想将数据框转换为以下格式:    code    fruit   subcode1 subcode1 subcode1  0 100     berries 100A      100B   100C  3 200     tropica 200A      200B  5 300     tropical 300A  6 400     berries 400A  7 500     nuts    500A 不幸的是,我对如何进行感到困惑。我咨询过Unmelt Pandas DataFrame之类的帖子,并介绍了堆栈和非堆栈的组合。我怀疑也涉及到一些串联。我们将不胜感激任何建议,以帮助我指出正确的方向!
查看完整描述

2 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

您可以使用groupby,取值并将其转换为序列。


df.groupby(['code','fruit'])['subcode'].apply(

         lambda x: x.values

      ).apply(pd.Series)

       .add_prefix('subcode_')


                subcode_0 subcode_1 subcode_2

code fruit                                 

100  berries       100A      100B      100C

200  tropical      200A      200B       NaN

300  tropical      300A       NaN       NaN

400  berries       400A       NaN       NaN

500  nuts          500A       NaN       NaN


查看完整回答
反对 回复 2021-04-13
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

set_index和unstack和一起玩一点,您会得到的。


(df.set_index(['code', 'fruit'])

   .set_index(df.subcode.str.extract('([a-zA-Z]+)', expand=False), append=True)

   .subcode

   .unstack()

   .fillna('')                  # these last three 

   .reset_index()               # operations are  

   .rename_axis(None, axis=1)   # not important

)


   code     fruit     A     B     C

0   100   berries  100A  100B  100C

1   200  tropical  200A  200B      

2   300  tropical  300A            

3   400   berries  400A            

4   500      nuts  500A        


查看完整回答
反对 回复 2021-04-13
  • 2 回答
  • 0 关注
  • 150 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号