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

Python pandas dataframe:数据帧到另一个数据帧

Python pandas dataframe:数据帧到另一个数据帧

叮当猫咪 2023-09-19 17:37:45
我需要 Python pandas 数据框的帮助。我有以下格式的数据帧(请参阅当前数据帧),我的要求是转换为不同格式的另一个数据帧,我已将其粘贴到下面(请参阅所需的数据帧)。任何人都可以帮助我如何实现所需的输出。当前数据框Name1                   Name2                       ScoreBELFIUS INSURANCE       BELFIUS INSURANCES          0.79BELFIUS INSURANCE       BELFIUS                     0.50BELFIUS INSURANCE       BELFIUS T                   0.31AIR PRODUCTS            AIR PRODUCT                 0.78AIR PRODUCTS            AIR PRO                     0.63AIR PRODUCTS            PRODUCTS                    0.39ARDAGH GLASS            ARDAGH                      0.60所需的数据框Name1               M1                 Score1    M2        Score2     M3                  Score3BELFIUS INSURANCE   BELFIUS INSURANCES  0.79    BELFIUS    0.50       BELFIUS T           0.31AIR PRODUCTS        AIR PRODUCT         0.78    AIR PRO    0.63       PRODUCTS            0.39ARDAGH GLASS        ARDAGH              0.60    nan        nan        nan   
查看完整描述

1 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

这本质上是按一列进行透视:


out_df = (df.assign(col=df.groupby('Name1').cumcount()+1)

   .pivot_table(index='Name1', columns='col', aggfunc='first')

   .swaplevel(0,1,axis=1)

   .sort_index(axis=1)

)

out_df.columns = [f"{y}{x}" if y=="Score" else f"M{x}" for x,y in out_df.columns]

out_df = out_df.reset_index()

输出:


    Name1              M1                    Score1  M2         Score2  M3           Score3

--  -----------------  ------------------  --------  -------  --------  ---------  --------

 0  AIR PRODUCTS       AIR PRODUCT             0.78  AIR PRO      0.63  PRODUCTS       0.39

 1  ARDAGH GLASS       ARDAGH                  0.6   nan        nan     nan          nan

 2  BELFIUS INSURANCE  BELFIUS INSURANCES      0.79  BELFIUS      0.5   BELFIUS T      0.31



查看完整回答
反对 回复 2023-09-19
  • 1 回答
  • 0 关注
  • 86 浏览
慕课专栏
更多

添加回答

举报

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