У меня есть многоиндексный фрейм данных, где я хотел бы выполнить операцию для каждой группы на основе минимального значения одного из столбцов. Например:
import pandas as pd
d={'name':['foo','foo', 'foo', 'bar', 'bar', 'bar','baz', 'baz'],
'grp':[1, 2, 4, 1, 4, 8, 2, 4],
'val':[50, 100, 200, 25, 100, 200, 75, 150]}
df = pd.DataFrame(data=d)
df.set_index(['name', 'grp'], inplace=True)
df
Дает мне такой фрейм данных:
val
name grp
foo 1 50
2 100
4 200
bar 1 25
4 100
8 200
baz 2 75
4 150
То, что я хотел бы сделать, это выполнить операцию над каждым значением для каждой группировки 'grp' на основе самого низкого значения в 'grp'. Например, нормализуйте каждое значение 'val', разделив каждое в группе на самое низкое значение, чтобы получить что-то вроде этого:
val
name grp
foo 1 50 1
2 100 2
4 200 4
bar 1 25 1
4 100 4
8 200 8
baz 2 75 1
4 150 2
Обратите внимание, что вычисление выполняется для столбца 'val', но на основе минимального значения 'val' числа 'grp'. Я изо всех сил пытаюсь найти хороший способ обойти это, так что спасибо за любые указатели.
Я использую Python v3.6, если это имеет значение.