简体   繁体   English

Python pandas 数据框:数据框到另一个数据框

[英]Python pandas dataframe: dataframe to another dataframe

I need help in Python pandas dataframe.我需要 Python pandas 数据框的帮助。 I have dataframe in below format(refer Current dataframe) and my requirement is to covert into another data frame in the different format which i have pasted below to it(refer desired dataframe).我有以下格式的数据帧(请参阅当前数据帧),我的要求是转换为我在下面粘贴的不同格式的另一个数据帧(请参阅所需的数据帧)。 Can any one help me how can i achieve the desired output.任何人都可以帮助我如何实现所需的输出。

Current Dataframe当前数据帧

Name1                   Name2                       Score
BELFIUS INSURANCE       BELFIUS INSURANCES          0.79
BELFIUS INSURANCE       BELFIUS                     0.50
BELFIUS INSURANCE       BELFIUS T                   0.31
AIR PRODUCTS            AIR PRODUCT                 0.78
AIR PRODUCTS            AIR PRO                     0.63
AIR PRODUCTS            PRODUCTS                    0.39
ARDAGH GLASS            ARDAGH                      0.60

Desired dataframe所需的数据帧

Name1               M1                 Score1    M2        Score2     M3                  Score3
BELFIUS INSURANCE   BELFIUS INSURANCES  0.79    BELFIUS    0.50       BELFIUS T           0.31
AIR PRODUCTS        AIR PRODUCT         0.78    AIR PRO    0.63       PRODUCTS            0.39
ARDAGH GLASS        ARDAGH              0.60    nan        nan        nan                 nan

        

This is essentially pivot by one column:这基本上是一列透视:

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()

Output:输出:

    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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM