Вычитание значения, специфичного для группы, из строк в пандах
В Pandas у меня есть фрейм данных, состоящий из двух групп с несколькими выборками в каждой группе. У каждой группы есть внутреннее эталонное значение, которое я хочу вычесть из всех значений выборки в этой группе.
s = u"""Group sample value
group1 ref1 18.1
group1 smp1 NaN
group1 smp2 20.3
group1 smp3 30.0
group2 ref2 16.1
group2 smp4 29.2
group2 smp5 19.9
group2 smp6 28.9
"""
df = pd.read_csv(io.StringIO(s), sep='\s+')
df = df.set_index(['Group', 'sample'])
df
Out[82]:
value
Group sample
group1 ref1 18.1
smp1 NaN
smp2 20.3
smp3 30.0
group2 ref2 16.1
smp4 29.2
smp5 19.9
smp6 28.9
Что я хочу сделать, это добавить новый столбец, где ссылка (ссылка) была вычтена из всех образцов (smp) в каждой соответствующей группе. Как это:
value deltaValue
SampleGroup sample
Group1 ref 18.1 0
smp1 NaN NaN
smp2 20.3 2.2
smp3 30.0 11.9
Group2 ref2 16.1 0
smp4 29.2 13.1
smp5 19.9 3.8
smp6 28.9 12.8
Кто-нибудь знает, как это можно сделать? Спасибо!