-1

How do I achieve this with pandas

inputindex  |country_id|country_name|  value | desc
1            2                 JAV       3         a
2            3                 GBR       7         b
3            4                 GBR       5         e
4            7                  BDI      6         r

output

index | country_id|country_name| value| desc
1              2       JAV       3       a
2              3       GBR       12     b,e
4              7       BDI       6       r
Equinox
  • 6,483
  • 3
  • 23
  • 32

1 Answers1

1

Use GroupBy.agg with 3 different functions - GroupBy.first, sum and join:

df = (df.groupby('country_name', as_index=False, sort=False)
        .agg(country_id = ('country_id', 'first'),
             value = ('value','sum'),
             desc = ('desc', ','.join)))
print (df)
  country_name  country_id  value desc
0          JAV           2      3    a
1          GBR           3     12  b,e
2          BDI           7      6    r
jezrael
  • 822,522
  • 95
  • 1,334
  • 1,252