Ich habe vor kurzem über pandas
gelernt und war glücklich, seine Analytics-Funktionalität zu sehen. Ich versuche, Excel-Array-Funktionen in die entsprechenden Pandas umzuwandeln, um Tabellenkalkulationen zu automatisieren, die ich für die Erstellung von Leistungsattributionsberichten erstellt habe. In diesem Beispiel habe ich eine neue Spalte in Excel basierend auf Bedingungen in anderen Spalten:Erstellen Sie Excel-ähnliche SUMME in Pandas
={SUMIFS($F$10:$F$4518,$A$10:$A$4518,$C$4,$B$10:$B$4518,0,$C$10:$C$4518," ",$D$10:$D$4518,$D10,$E$10:$E$4518,$E10)}
die Formel die Werte in dem „F“ array Aufsummieren wird (Sicherheitsgewichte), basierend auf bestimmte Bedingungen. "A" Array (Portfolio ID) ist eine bestimmte Anzahl, "B" Array (Sicherheits-ID) ist Null, "C" Array (Gruppenbeschreibung) ist "", "D" Array (Startdatum) ist das Datum der Zeile dass ich eingeschaltet bin, und "E" -Array (Enddatum) ist das Datum der Zeile, in der ich bin.
In Pandas verwende ich den DataFrame. Das Erstellen einer neuen Spalte auf einem Datenrahmen mit den ersten drei Bedingungen ist einfach, aber ich habe Schwierigkeiten mit den letzten beiden Bedingungen.
reportAggregateDF['PORT_WEIGHT'] = reportAggregateDF['SEC_WEIGHT_RATE']
[(reportAggregateDF['PORT_ID'] == portID) &
(reportAggregateDF['SEC_ID'] == 0) &
(reportAggregateDF['GROUP_LIST'] == " ") &
(reportAggregateDF['START_DATE'] == reportAggregateDF['START_DATE'].ix[:]) &
(reportAggregateDF['END_DATE'] == reportAggregateDF['END_DATE'].ix[:])].sum()
Offensichtlich ist die .ix [:] in den letzten beiden Bedingungen nicht für mich etwas zu tun, aber ist es eine Möglichkeit, die Summe der Bedingung der Reihe zu machen, die ich auf bin ohne Looping? Mein Ziel ist es, keine Schleifen zu machen, sondern reine Vektoroperationen zu verwenden.