def weighted_median(df, median_col, weight_col):
df_sorted = df.sort_values(median_col)
cumsum = df_sorted[weight_col].cumsum()
cutoff = df_sorted[weight_col].sum()/2
return df_sorted[cumsum >= cutoff][median_col].iloc[0]
def weighted_median(df, median_col, weight_col):
df_sorted = df.sort_values(median_col)
cumsum = df_sorted[weight_col].cumsum()
cutoff = df_sorted[weight_col].sum()/2
return df_sorted[cumsum >= cutoff][median_col].iloc[0]