I have the below dataframe and I would like to spread the total values in the val columns back to the Cat column based on the percentages in the Percentage column.
    Country State   City    Cat Total amount    Percentage  val1    val2    val3    val4
    US        FL    MIA     cat1     100           10 
    US        FL    MIA     cat2     850           85
    US        FL    MIA     cat3     50            5
    US        FL    MIA     tot cat  1000          100      200       30    400     120
    US        GA    ATL     cat1     200           40       
    US        GA    ATL     cat2     300           60       
    US        GA    ATL     tot cat  500           100      100       50    20      30
    US        NY    NY      tot cat  100           100      0         20    5       15
    Canada    MB    WPG     cat1     250           50
    Canada    MB    WPG     cat2     250           50
    Canada    MB    WPG     tot cat  500           100      50        550   40      160
    Canada    QC    YUL     cat1     500           33,33
    Canada    QC    YUL     cat2     1000          66,66
    Canada    QC    YUL     tot cat  1500          100      1000      250   500     60
I got the total line in, also I managed to put in the percentages per group and merging two dataframes based on a few columns went fine but now im stuck...
Desired output:
    Country State   City    Cat Total amount    Percentage  val1    val2    val3    val4
    US        FL    MIA     cat1     100           10       20        3     40      12
    US        FL    MIA     cat2     850           85       170       25,5  340     102
    US        FL    MIA     cat3     50            5        10        1,5   20      6
    US        FL    MIA     tot cat  1000          100      200       30    400     120
    US        GA    ATL     cat1     200           40       40        20    8       12      
    US        GA    ATL     cat2     300           60       60        30    12      18      
    US        GA    ATL     tot cat  500           100      100       50    20      30
    US        NY    NY      tot cat  100           100      0         20    5       15
    Canada    MB    WPG     cat1     250           50       25        275   20      80
    Canada    MB    WPG     cat2     250           50       25        275   20      80
    Canada    MB    WPG     tot cat  500           100      50        550   40      160
    Canada    QC    YUL     cat1     500           33,33    333,33    83,32 166,65  19,99   
    Canada    QC    YUL     cat2     1000          66,66    666,66    166,65333,33  39,99
    Canada    QC    YUL     tot cat  1500          100      1000      250   500     60
Or should I calculated / spread the values when I do the merge? I need help...
EDIT: I provided the input data.
    pd.DataFrame([{'Country': 'US', 'State': 'FL', 'City': 'MIA', 'Cat': 'cat1', 'Total Amount': 100, 'Percentage': 10 }, 
        {'Country': 'US', 'State': 'FL', 'City': 'MIA', 'Cat': 'cat2','Total Amount': 850, 'Percentage': 85 },
        {'Country': 'US', 'State': 'FL', 'City': 'MIA', 'Cat': 'cat3','Total Amount': 50, 'Percentage': 5 },
        {'Country': 'US', 'State': 'FL', 'City': 'MIA', 'Cat': 'Tot Cat','Total Amount': 1000, 'Percentage': 100, 'val1': 200, 'val2': 30, 'val3': 400, 'val4': 120},
        {'Country': 'US', 'State': 'GA', 'City': 'ATL', 'Cat': 'cat1','Total Amount': 200, 'Percentage': 40 },
        {'Country': 'US', 'State': 'GA', 'City': 'ATL', 'Cat': 'cat2','Total Amount': 300, 'Percentage': 60 },
        {'Country': 'US', 'State': 'GA', 'City': 'ATL', 'Cat': 'Tot Cat','Total Amount': 500, 'Percentage': 100, 'val1': 100, 'val2': 50, 'val3': 20, 'val4': 30},
        {'Country': 'US', 'State': 'NY', 'City': 'ATL', 'Cat': 'Tot Cat','Total Amount': 100, 'Percentage': 100, 'val1': 0, 'val2': 20, 'val3': 5, 'val4': 15},
        {'Country': 'Canada', 'State': 'MB', 'City': 'WPG', 'Cat': 'cat1', 'Total Amount': 250, 'Percentage': 50 },
        {'Country': 'Canada', 'State': 'MB', 'City': 'WPG', 'Cat': 'cat2', 'Total Amount': 250, 'Percentage': 50 },
        {'Country': 'Canada', 'State': 'MB', 'City': 'WPG', 'Cat': 'Tot Cat', 'Total Amount': 500, 'Percentage': 100, 'val1': 50 , 'val2': 550, 'val3': 40, 'val4': 160},
        {'Country': 'Canada', 'State': 'QC', 'City': 'YUL', 'Cat': 'cat1', 'Total Amount': 500, 'Percentage': 33.33 },
        {'Country': 'Canada', 'State': 'QC', 'City': 'YUL', 'Cat': 'cat2', 'Total Amount': 1000, 'Percentage': 66.66 },
        {'Country': 'Canada', 'State': 'QC', 'City': 'YUL', 'Cat': 'Tot Cat', 'Total Amount': 1500, 'Percentage': 100, 'val1': 1000 , 'val2': 250, 'val3': 500, 'val4': 60 }])