I have a DataFrame that looks like this...
idn value
0 ID1 25
1 ID1 30
2 ID2 30
3 ID2 50
I want to add another column to t
set the index of df
to idn
, and then use df.merge
. after the merge, reset the index and rename columns
dfmax = df.groupby('idn')['value'].max()
df.set_index('idn', inplace=True)
df = df.merge(dfmax, how='outer', left_index=True, right_index=True)
df.reset_index(inplace=True)
df.columns = ['idn', 'value', 'max_value']
Use the transform
method on a groupby object:
In [5]: df['maxval'] = df.groupby(by=['idn']).transform('max')
In [6]: df
Out[6]:
idn value maxval
0 ID1 25 30
1 ID1 30 30
2 ID2 30 50
3 ID2 50 50