Eu tenho um dataframe parecido com este:
ID TradeDate party Deal Asset Start Expire Fixed Quantity MTM Float
1 04/11/2024 party1 Sell HO 01/01/2024 02/01/2024 10.00 1000 2500.00 10.00
1 04/11/2024 party1 Sell HO 01/01/2024 02/01/2024 10.00 1000 2500.00 10.00
1 04/11/2024 party1 Sell HO 01/01/2024 02/01/2024 10.00 1000 2500.00 10.00
1 04/11/2024 party1 Buy HO 01/01/2024 02/01/2024 10.00 1000 2500.00 10.00
1 04/11/2024 party1 Buy HO 01/01/2024 02/01/2024 10.00 1000 2500.00 10.00
1 04/11/2024 party1 Sell WTI 01/01/2024 02/01/2024 10.00 1000 2500.00 10.00
1 04/11/2024 party1 Sell WTI 01/01/2024 02/01/2024 10.00 1000 2500.00 10.00
1 04/11/2024 party1 Buy WTI 01/01/2024 02/01/2024 10.00 1000 2500.00 10.00
Agrupo os dados por Start, Asset e Deal e realizo cálculos para transformar o dataframe nisso:
groups = df.groupby(['Start', 'Asset', 'Deal'])
ID TradeDate party Deal Asset Start Expire Fixed Quantity MTM Float
1 04/11/2024 party1 Sell HO 01/01/2024 02/01/2024 10.00 1000 2500.00 10.00
1 04/11/2024 party1 Sell HO 01/01/2024 02/01/2024 10.00 1000 2500.00 10.00
1 04/11/2024 party1 Sell HO 01/01/2024 02/01/2024 10.00 1000 2500.00 10.00
total 3000 7500.00
ID TradeDate party Deal Asset Start Expire Fixed Quantity MTM Float
1 04/11/2024 party1 Buy HO 01/01/2024 02/01/2024 10.00 1000 2500.00 10.00
1 04/11/2024 party1 Buy HO 01/01/2024 02/01/2024 10.00 1000 2500.00 10.00
total 3000 5000.00
ID TradeDate party Deal Asset Start Expire Fixed Quantity MTM Float
1 04/11/2024 party1 Sell WTI 01/01/2024 02/01/2024 10.00 1000 2500.00 10.00
1 04/11/2024 party1 Sell WTI 01/01/2024 02/01/2024 10.00 1000 2500.00 10.00
total 3000 5000.00
ID TradeDate party Deal Asset Start Expire Fixed Quantity MTM Float
1 04/11/2024 party1 Buy WTI 01/01/2024 02/01/2024 10.00 1000 2500.00 10.00
total 1000 2500.00
Meu objetivo é transformar esses grupos em outro momento para que eu possa gerar apenas os dados necessários. A saída esperada para esta etapa deve ser semelhante a esta:
party Deal Asset Start MTM Float
party1 Sell HO 01/01/2024 7500.00 10.00
party1 Buy HO 01/01/2024 5000.00 10.00
party1 Sell WTI 01/01/2024 5000.00 10.00
party1 Buy WTi 01/01/2024 2500.00 10.00
Preciso realizar algum tipo de outro agrupamento? ou existe outra função que poderia conseguir isso? Qualquer sugestão ajudaria.
Nota: na segunda etapa, esses são dataframes individuais que vêm de uma lista. Você pode precisar de uma etapa intermediária para concatena-los e chegar ao resultado final.
Acho que você só precisa
pd.Groupby
de +.agg
:Impressões: