np.where
hat die Semantik eines vektorisierten if/else (ähnlich Apache Spark when
/otherwise
DataFrame-Methode). Ich weiß, dass ich np.where
auf Pandas Series
verwenden kann, aber pandas
oft definiert seine eigene API anstelle von numpy
Funktionen verwenden, die in der Regel bequemer mit pd.Series
/pd.DataFrame
ist.Pandas-Äquivalent von np.where
Sicher genug, fand ich pandas.DataFrame.where
. Auf den ersten Blick hat es jedoch eine völlig andere Semantik. Ich konnte nicht einen Weg finden, das grundlegendste Beispiel für np.where
mit Pandas where
neu zu schreiben:
# df is pd.DataFrame
# how to write this using df.where?
df['C'] = np.where((df['A']<0) | (df['B']>0), df['A']+df['B'], df['A']/df['B'])
Bin ich etwas offensichtlich fehlt? Oder ist Pandas where
für einen völlig anderen Anwendungsfall gedacht, trotz des gleichen Namens wie np.where
?
Die Docstring http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.where.html scheint es ziemlich gut zu erklären (obwohl es ein oder zwei Beispiele verwenden könnte). Beachten Sie die kurze Beschreibung und die Beschreibung der Argumente "cond" und "other", ignorieren Sie jedoch die Option, dass diese Argumente aufrufbar sind. –
@WarrenWeckesser Bei der zweiten Lesung der Dokumente, ich glaube, ich habe es ... Es ist etwas wie '(df.A + df.B). Wo ((df ['A'] <0) | (df [' B ']> 0), df.A/df.B) ', oder? Ich werde meine Frage löschen, denke ich. – max
@max: Nein nicht löschen. Dies wird wahrscheinlich jemandem in der Zukunft helfen. – bernie