Seite 1 von 1

Multiplikation zweier DataFrames mit Multiindex

Verfasst: Montag 20. September 2021, 17:22
von psysxet
Hallo Forum,

ich bekomme es einfach nicht hin:
Ich habe zwei DataFrames (Pandas) mit

DF1: Spalte1 | Spalte2 | Spalte3
Datum1 xyz
Datum2
Datum3

DF2: DritteDimension1 DritteDimension2 DritteDimension3
Spalte1 abc
Spalte2
Spalte3

als Ergebnis einer Multiplikation der Werte hätte ich gerne:

MultiIndexDF: Spalte1 Spalte2 Spalte 3
DritteDimension1, Datum1 (xyz*abc)
Datum2
Datum3
DritteDimension2, Datum1
Datum2
Datum3

Wie kriege ich das hin?

Re: Multiplikation zweier DataFrames mit Multiindex

Verfasst: Montag 20. September 2021, 19:55
von Buchfink
Hallo @psysxet

ehrlich gesagt habe ich nicht ganz verstanden, was Du tun möchtest. Da ich selbst noch Anfänger bin, mag das aber auch daran liegen.

Wäre es ggf. möglich, dass Du die DataFrames mit ein paar wenigen synthetischen Daten mal in ein Code-Schnipsel packst?

Re: Multiplikation zweier DataFrames mit Multiindex

Verfasst: Dienstag 21. September 2021, 07:55
von psysxet
na klar, gerne:

DF1 beinhaltet die Anzahl an Kontrakten zu einem ETF, getrennt nach Fonds:

Code: Alles auswählen

DF1.Index:
Index(['iShares Core DAX UCITS', 'Amundi ETF Nasdaq-100 UCITS',
       'iShares MSCI World UCITS Dist', 'Source MSCI World UCITS',
       'iShares MSCI Russia Adr/Gdr UCITS', 'iShares TecDAX UCITS',
       'iShares Core MSCI Emerging Markets IMI UCITS',
       'Lyxor STOXX Europe 600 DR Monthly Hedged D-EUR',
       'iShares Listed Private Equity UCITS'])
       

Code: Alles auswählen

DF1.Columns:
Index(['HeikeFonds', 'RobinFondsVol2', 'HochzeitFonds', 'RobinFondsVol1',
       'RobinETFplan', 'HeikeFondsVol2']
 
DF2 beeinhaltet den historischen Schlusskurs eines ETF zu einem Datum.

Code: Alles auswählen

DF2.Index:
DatetimeIndex(['2021-09-20', '2021-09-17', '2021-09-16', '2021-09-15',
               '2021-09-14', '2021-09-13', '2021-09-10', '2021-09-09',
               '2021-09-08', '2021-09-07',
               ...
               '2020-01-15', '2020-01-14', '2020-01-13', '2020-01-10',
               '2020-01-09', '2020-01-08', '2020-01-07', '2020-01-06',
               '2020-01-03', '2020-01-02'] 

Code: Alles auswählen

DF2.columns: 
Index(['iShares Core DAX UCITS', 'Amundi ETF Nasdaq-100 UCITS',
       'iShares MSCI World UCITS Dist', 'Source MSCI World UCITS',
       'iShares MSCI Russia Adr/Gdr UCITS', 'iShares TecDAX UCITS',
       'iShares Core MSCI Emerging Markets IMI UCITS',
       'Lyxor STOXX Europe 600 DR Monthly Hedged D-EUR'])
 
Nun, wie man sich mittlerweile wahrscheinlich denken kann, möchte ich, nach Fonds getrennt, die Anzahl Kontrakte mit dem Schlusskurs multiplizieren. Erhalte dadurch den Wert der ETF Position, aufgeschlüsselt nach FOND. Das hätte ich gerne als Ergebnis:

Code: Alles auswählen

HeikeFonds
['iShares Core DAX UCITS', 'Amundi ETF Nasdaq-100 UCITS',
       'iShares MSCI World UCITS Dist', 'Source MSCI World UCITS',
       'iShares MSCI Russia Adr/Gdr UCITS', 'iShares TecDAX UCITS',
       'iShares Core MSCI Emerging Markets IMI UCITS',
       'Lyxor STOXX Europe 600 DR Monthly Hedged D-EUR']
RobinFondsVol2
['iShares Core DAX UCITS', 'Amundi ETF Nasdaq-100 UCITS',
       'iShares MSCI World UCITS Dist', 'Source MSCI World UCITS',
       'iShares MSCI Russia Adr/Gdr UCITS', 'iShares TecDAX UCITS',
       'iShares Core MSCI Emerging Markets IMI UCITS',
       'Lyxor STOXX Europe 600 DR Monthly Hedged D-EUR']
 
usw.
Hintergrund ist ganz einfach: Kaufe ich im Depot 10 DAX Kontrakte, 7 davon für mich, 3 davon für meine Freundin, so wird mir diese Position summiert aufgezeigt. Es gibt keine Möglichkeit in meinem Broker einzelne Positionen zu gruppieren. Das ist natürlich ätzend.

Re: Multiplikation zweier DataFrames mit Multiindex

Verfasst: Dienstag 21. September 2021, 09:02
von psysxet
Ahja, ich verstehe langsam meine Verwirrung. Ich habe bisher den Begriff "MultiIndex" falsch benutzt. Was ich meinte ist eigentlich: Ein Panda mit einem MultiIndex.
Den Multiindex konnte ich nun erstellen via:
historischer_wert_index=pd.MultiIndex.from_product([DF1,DF2.T], names = ['Fonds','Date'])

Wie setze ich nun einem neuen DataFrame diesen Index zu und fülle die Werte mit dem Produkt aus DF1 und DF2 ?

Re: Multiplikation zweier DataFrames mit Multiindex

Verfasst: Mittwoch 22. September 2021, 15:36
von psysxet
Zur Info: Das Thema kann zu, ich habe es einfach nicht geschafft und aufgegeben. Ich habe es jetzt über dictories gelöst, die DF werden jetzt in Excel zwischengespeichert.
Multiindex werde ich einfach niemals verstehen.