Я работаю с df со следующей структурой:
df = DataFrame({'Date' : ['1', '1', '1', '1'],
'Ref' : ['one', 'one', 'two', 'two'],
'Price' : ['50', '65', '30', '35'],
'MktPrice' : ['63', '63', '32', '32'],
'Quantity' : ['10', '15', '20', '10'],
'MarketQuantity': ['50', '50', '100', '100'],
'Weightings' : ['2', '2', '4', '4'],
'QxWeightings' : ['20', '30', '80', '40'],
'MktQxWeightings': ['100', '100', '400', '400'],
})
Мне удалось получить взвешенный процент, который представляет мое количество из MarketQuantity, когда цена выше Mkt Price (и показать его какДата и ссылка)
def percentage(x):
return (x.loc[x['Price'] >= x['MktPrice'], ['QxWeightings']].sum()/(x['MktQxWeightings'].sum()/len(x)))
df.groupby(['Date', 'Ref']).apply(percentage)
Date Ref Output
1 one 0.3
1 two 0.1
Однако, когда я пытаюсь сгруппировать его только по дате, я получаю:
Date Output
1 0.4
, которая является суммой предыдущих выходных данных, когда она должна быть 0,14(30 + 40) / (100 + 400).
Как я могу сделать это с групповым?Большое спасибо заранее