79424165

Date: 2025-02-09 01:03:49
Score: 1
Natty:
Report link

does this work for you ?

w_params = ['t2m', 't2m', 't2m', 'd2m', 'tp']
operation = ['max', 'min', 'mean', 'mean', 'sum']
common_cols = ['name', 'parent', 'parent_name']

def agg_df(df, common_cols, w_params, operation):

    # get list of col methods
    cols = pd.DataFrame(zip(w_params, operation), columns=["col","method"]).groupby("col").agg(list).reset_index()
    # create agg_dict and add common_cols methods
    aggs = pd.concat([cols,pd.DataFrame(zip(common_cols,len(common_cols)*[["first"]]), columns=["col","method"])], ignore_index=True)
    # aggregation with created dict
    result_df = df.groupby(['date', 'region_id']).agg(aggs.set_index("col").method).sort_values(['region_id', 'date'], ascending=[True, True]).reset_index()
    # and rename columns have multiindex
    have_multi_method_cols = aggs[aggs.method.apply(len) > 1].col.tolist()
    result_df.columns = result_df.columns.map(lambda x: x[0] if x[0] not in have_multi_method_cols else "_".join(x))
    # return df
    return result_df

agg_df(data, common_cols, w_params, operation)
Reasons:
  • Long answer (-1):
  • Has code block (-0.5):
  • Ends in question mark (2):
  • Low reputation (0.5):
Posted by: Metin AKTAŞ