I have two separate dataframes (df1 and df2) with similar columns and I am trying to divide one column in df1 by another column in df2.
dict1 = { 'sex': {6: 'SEX_M',
7: 'SEX_M',
8: 'SEX_M',
9: 'SEX_M',
10: 'SEX_M',
11: 'SEX_M',
12: 'SEX_F',
13: 'SEX_F',
14: 'SEX_F',
15: 'SEX_F',
16: 'SEX_F',
17: 'SEX_F'},
'classif1': {6: 'AGE_YTHADULT_YGE15',
7: 'AGE_YTHADULT_YGE15',
8: 'AGE_YTHADULT_YGE15',
9: 'AGE_YTHADULT_YGE15',
10: 'AGE_YTHADULT_YGE15',
11: 'AGE_YTHADULT_YGE15',
12: 'AGE_YTHADULT_YGE15',
13: 'AGE_YTHADULT_YGE15',
14: 'AGE_YTHADULT_YGE15',
15: 'AGE_YTHADULT_YGE15',
16: 'AGE_YTHADULT_YGE15',
17: 'AGE_YTHADULT_YGE15'},
'classif2': {6: 'ECO_SECTOR_TOTAL',
7: 'ECO_SECTOR_AGR',
8: 'ECO_SECTOR_NAG',
9: 'ECO_SECTOR_IND',
10: 'ECO_SECTOR_SER',
11: 'ECO_SECTOR_X',
12: 'ECO_SECTOR_TOTAL',
13: 'ECO_SECTOR_AGR',
14: 'ECO_SECTOR_NAG',
15: 'ECO_SECTOR_IND',
16: 'ECO_SECTOR_SER',
17: 'ECO_SECTOR_X'},
'obs_value': {6: 4935.407,
7: 2476.535,
8: 2458.872,
9: 685.795,
10: 1763.5,
11: 9.577,
12: 2551.157,
13: 1950.196,
14: 600.961,
15: 245.793,
16: 343.926,
17: 11.242}}
df1 = pd.DataFrame(dict1)
dict2 = {'sex': {0: 'SEX_T',
1: 'SEX_T',
2: 'SEX_T',
3: 'SEX_T',
4: 'SEX_T',
5: 'SEX_T'},
'classif1': {0: 'AGE_YTHADULT_YGE15',
1: 'AGE_YTHADULT_YGE15',
2: 'AGE_YTHADULT_YGE15',
3: 'AGE_YTHADULT_YGE15',
4: 'AGE_YTHADULT_YGE15',
5: 'AGE_YTHADULT_YGE15'},
'classif2': {0: 'ECO_SECTOR_TOTAL',
1: 'ECO_SECTOR_AGR',
2: 'ECO_SECTOR_NAG',
3: 'ECO_SECTOR_IND',
4: 'ECO_SECTOR_SER',
5: 'ECO_SECTOR_X'},
'obs_value': {0: 7486.564,
1: 4426.731,
2: 3059.833,
3: 931.588,
4: 2107.426,
5: 20.819}}
df2 = pd.DataFrame(dict2)
I am trying to create a new column in the first dataframe (df1) called Percentage_of_total by dividing df1['obs_value'] by df2['obs_value']. Except for the column sex and obs_value in both dfs, the values are identical in the other columns. I tried creating a common index and just dividing the columns I'm interested in, but I get the following error:
ValueError: cannot handle a non-unique multi-index!
My code is below:
df1 = df1.set_index(['classif1','classif2'])
df2 = df2.set_index(['classif1','classif2'])
df1['Percentage_of_total'] = df1['obs_value']/ df2['obs_value']