Ich habe einen Datenrahmen, der mehrere Gleichungen basierend auf bestimmten Kriterien erfordert. Ich muss die ersten drei Buchstaben eines Bezeichners nehmen, dann, wenn es wahr ist, muss ich den Wert, der mit dieser Zeile verbunden ist, durch einen bestimmten Betrag teilen.Ich muss mehrere Gleichungen auf einer Pandasäule basierend auf bestimmten Kriterien anwenden
Der Datenrahmen ist wie folgt:
ID Value
US123 10000
US121 10000
MX122 10000
MX125 10000
BR123 10000
BR127 10000
Ich brauche den Wert mit 100 zu unterteilen, wenn die ID mit ‚MX‘ beginnt, und unterteilen den Wert um 1000, wenn die ID mit ‚BR‘ beginnt. Alle anderen Werte müssen gleich bleiben.
Ich möchte auch keinen neuen gefilterten Datenrahmen erstellen. Ich habe erfolgreich nach ID gefiltert und dann die Logik überprüft, aber ich muss es über einen viel größeren Rahmen anwenden.
Dies ist der Code, den ich für den gefilterten Frame verwende.
filtered['Value'] = np.where(filtered.ID.apply(lambda x: x[:3]).isin(['MX']) == True, filtered.Value/100, filtered.Value/1000)
ich auch df.loc habe versucht, aber ich kann nicht herausfinden, wie die Änderungen an den Datenrahmen anzuwenden, so scheint es mir nur eine Reihe von Daten zu zeigen, aber es nicht auf die DF gilt.
Dieser Code ist hier:
df.loc[(df['ID'].str.contains("MX") == True), 'Value']/100
df.loc[(df['ID'].str.contains("BR") == True), 'Value']/1000
Gibt es einen besseren Weg, dies zu tun? Wie kann ich die Änderungen mithilfe von df.loc auf den Hauptdatenrahmen anwenden, anstatt ihn in einer Serie anzuzeigen?
sollte der gewünschte Ausgang sein:
ID Value
US123 10000
US121 10000
MX122 100
MX125 100
BR123 10
BR127 10
Dank!
Dies interessant Dank sehr viel funktioniert! Der/= -Teil ist irgendwie verwirrend, warum das Divisionszeichen vor dem = Zeichen stehen würde. – staten12
Es ähnelt den C _increment_/_decrement_ (++/-) Operatoren, aber Python, anstatt den Wert zu erhöhen oder zu verringern, weist den inkrementierten/dekrementierten Wert wieder der Variable zu. ZB: - 'var + = 1' ist eine Succit-Form des Schreibens der ausführlicheren' var = var + 1'. Gleicher Fall mit Division/Multiplikation auch. –