Ich habe ein Pandas-Datenframe und ich muss eine neue Spalte basierend auf einem If-sonst-Bedingung erstellen. Diese Frage ist hier bereits mehrfach aufgetreten (z. B. Creating a new column based on if-elif-else condition).Erstellen Sie neue Pandas Dataframe Spalte basierend auf If-Else-Bedingung mit einem Lookup
Allerdings kann ich die vorgeschlagene Lösung nicht anwenden, da ich auch Werte in einer Liste nachschlagen muss, um den Zustand zu überprüfen. Ich kann das mit der vorgeschlagenen Lösung nicht machen, weil ich mir nicht sicher bin, wie ich in der externen Funktion auf meine Lookup-Liste zugreifen kann. Meine Lookup-Liste müsste global sein, was ich vermeiden möchte. Ich habe das Gefühl, dass es einen besseren Weg geben sollte, dies zu tun.
Betrachten Sie die folgende Datenrahmen df
:
letters
A
B
C
D
E
F
Ich habe auch eine Liste, die Lookup-Werte enthält:
lookup = [C,D]
Nun, ich möchte eine neue Spalte in meinem Datenrahmen zu schaffen, die 1
enthält, wenn der entsprechende Wert ist in lookup
und 0
enthalten, wenn die Werte nicht in lookup
sind.
würde Der typische Ansatz sein: Ich weiß nicht, aber
df.apply(helper, axis=1)
def helper(row):
if(row['letters'].isin(lookup)):
row['result'] = 1
else:
row['result'] = 0
, wie ich lookup
in helper()
ohne es global zu machen zugreifen kann.
Das Ergebnis sollte wie folgt aussehen:
letters result
A 0
B 0
C 1
D 1
E 0
F 0
Dies zu diesem sehr ähnlich ist: http://stackoverflow.com/questions/38499890/how-to-use-pandas-apply- function-on-all-spalten-von-einigen-reihen-von-datenframe müssen Sie nur tun 'df.loc [df ['buchstaben']. isin (lookup), 'result'] = 1' – EdChum
Or vollständiger ist 'df ['result'] = np.where (df ['letters']. isin (lookup), 1, 0)' – EdChum