agf1997 agf1997 - 1 month ago 8
Python Question

Division with MultiIndex Dataframes

I have a dataframe that looks like this

data = {'0': {('Field A', '0'): 10,
('Field A', '1'): 10,
('Field A', '2'): 10,
('Field B','0'): 6,
('Field B','1'): 6,
('Field B', '2'): 6},
'48': {('Field A', '0'): 5,
('Field A', '1'): 2,
('Field A', '2'): 1,
('Field B', '0'): 3,
('Field B', '1'): 2,
('Field B', '2'): 1}}

df = pd.DataFrame(data)
df.index.names = ['field', 'well']
df.T.index.names = ['interval']

print(df)

interval 0 48
field well
field A 0 10 5
1 10 2
2 10 1
field B 0 6 3
1 6 2
2 6 1


I'm trying to figure out how to divide all the columns element-wise by the column "Interval 0".

The result should be :

interval 0 48
field well
Total Number of End Points 0 1.0 0.500000
1 1.0 0.200000
2 1.0 0.100000
Total Vessel Length 0 1.0 0.500000
1 1.0 0.333333
2 1.0 0.166667

Answer

You can use div() method(same as divide() with parameter axis set as 0 to perform along row element-wise division:

df.div(df['0'], axis = 0)

#interval         0       48
#field   well       
#Field A    0   1.0 0.500000
#           1   1.0 0.200000
#           2   1.0 0.100000
#Field B    0   1.0 0.500000
#           1   1.0 0.333333
#           2   1.0 0.166667