DECROMAX

column with the maximum cost of each group by uid column

Sep 1st, 2022 (edited)
1,673
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.37 KB | None | 0 0
  1. """cost col populated where matched in uid col (greatest value from matches, else remain 0)"""
  2.  
  3. import pandas as pd
  4. import numpy as np
  5.  
  6. example_df = {
  7.     'parent_text': ['Pen', 'Pen', 'Pen', 'Pen', 'Pen', 'Pen', 'Pen'],
  8.     'child_desc_text': ['orange' ,'red', 'green', 'brown', 'yellow', 'black', 'silver'],
  9.     'cost': [0 ,1.20, 1.98, 0, 0, 0, 0],
  10.     'uid': [12705024 ,12705087, 12705093, 12705087, 12705093, 12705093, 12705024]}
  11.  
  12. """
  13.                cost    uid
  14. 0   Pen orange  0.00    12705024
  15. 1   Pen red     1.20    12705087
  16. 2   Pen green   1.98    12705093
  17. 3   Pen brown   0.00    12705087
  18. 4   Pen yellow  0.00    12705093
  19. 5   Pen black   0.00    12705093
  20. 6   Pen silver  0.00    12705024
  21. """
  22.  
  23.  
  24. df['cost'] = df.groupby('uid')['cost'].agg(max).loc[df['uid']].to_numpy()
  25.  
  26. output_df = {
  27.     'parent_text': ['Pen', 'Pen', 'Pen', 'Pen', 'Pen', 'Pen', 'Pen'],
  28.     'child_desc_text': ['orange' ,'red', 'green', 'brown', 'yellow', 'black', 'silver'],
  29.     'cost': [0 ,1.20, 1.98, 1.20, 1.98, 1.98, 0],
  30.     'uid': [12705024 ,12705087, 12705093, 12705087, 12705093, 12705093, 12705024]
  31.     }
  32.  
  33. """
  34.                cost    uid
  35. 0   Pen orange  0.00    12705024
  36. 1   Pen red     1.20    12705087
  37. 2   Pen green   1.98    12705093
  38. 3   Pen brown   1.20    12705087
  39. 4   Pen yellow  1.98    12705093
  40. 5   Pen black   1.98    12705093
  41. 6   Pen silver  0.00    12705024
  42. """
Tags: pandas
Advertisement
Add Comment
Please, Sign In to add comment