This is a pretty trivial problem, but its launch of my OCD and I could not find a suitable solution in the last half hour.
For the background, I am looking to calculate a value (let's call it F) for each group in a DataFrame derived from different aggregated column metrics in an existing DataFrame.
Here is an example of a game I'm trying to make:
import pandas as pd import numpy as np df = pd.DataFrame({'A': ['X', 'Y', 'X', 'Y', 'Y', 'Y', 'Y', 'X', 'Y', 'X'], 'B': ['N', 'N', 'N', 'M', 'N', 'M', 'M', 'N', 'M', 'N'], 'C': [69, 83, 28, 25, 11, 31, 14, 37, 14, 0], 'D': [ 0.3, 0.1, 0.1, 0.8, 0.8, 0. , 0.8, 0.8, 0.1, 0.8], 'E': [11, 11, 12, 11, 11, 12, 12, 11, 12, 12] }) df_grp = df.groupby(['A','B']) df_grp.apply(lambda x: x['C'].sum() * x['D'].mean() / x['E'].max())
I would like to assign a name to the result of apply (or lambda ). Is there a way to do this without moving lambda to a named function or renaming a column after running the last row?