Pandas groupby result into multiple columns

前端 未结 3 527
渐次进展
渐次进展 2020-12-31 16:05

I have a dataframe in which I\'m looking to group and then partition the values within a group into multiple columns.

For example: say I have the following dataframe

3条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-12-31 16:16

    Another way of doing this is to first added a "helper" column on to your data, then pivot your dataframe using the "helper" column, in the case below "ID_Count":

    Using @unutbu setup:

    import pandas as pd
    import numpy as np
    np.random.seed(2016)
    
    df = pd.DataFrame({'Group': ['A', 'C', 'B', 'A', 'C', 'C'],
                       'ID': [1, 2, 3, 4, 5, 6],
                       'Value': np.random.randint(1, 100, 6)})
    #Create group
    grp = df.groupby('Group')
    
    #Create helper column 
    df['ID_Count'] = grp['ID'].cumcount() + 1
    
    #Pivot dataframe using helper column and add 'Value' column to pivoted output.
    df_out = df.pivot('Group','ID_Count','ID').add_prefix('ID').assign(Value = grp['Value'].sum())
    

    Output:

    ID_Count  ID1  ID2  ID3  Value
    Group                         
    A         1.0  4.0  NaN     77
    B         3.0  NaN  NaN     84
    C         2.0  5.0  6.0     86
    

提交回复
热议问题