Hintergrund: Ich habe eine Python DatenrahmenPython: Verwenden Sie Funktion zum Erstellen neuer String-Spalte in Datenrahmen Verwenden mehrerer Elif Statements
Ziel: Ich versuche, eine neue String-Spalte auf Werte in einer Reihe von bestehenden Säulen basiert. Dies erfordert mehrere Elif-Anweisungen.
Unten ist mein (Probe) Code, wird erroring aus:
def rationale(row):
if row['Recommendation No. 1'] == 'Category_A':
result = []
result.append(row['First_Flag'])
result.append(row['Second_Flag'])
result.append(row['Third_Flag'])
result = ' '.join(result)
return result
elif row['Recommendation No. 1'] == 'Category_B':
result.append(row['Fourth_Flag'])
result.append(row['Fifth_Flag'])
result.append(row['Sixth_Flag'])
result.append(row['Seventh_Flag'])
result = ' '.join(result)
return result
elif row['Recommendation No. 1'] == 'Category_C':
result.append(row['Eigth_Flag'])
result.append(row['Ninth_Flag'])
result.append(row['Tenth_Flag'])
result.append(row['Eleventh_Flag'])
result = ' '.join(result)
return result
else:
return np.nan
df_top3_rationale['Recommendation No. 1 Rationale'] = df_top3_rationale.apply(rationale, axis=1)
Dies ist der Fehler, den ich auf den 'elif' Aussagen erhalten:
UnboundLocalError: ("local variable 'result' referenced before assignment", 'occurred at index 14854')
Jede Hilfe wird sehr geschätzt!
Sie erzeugen nur 'result' im' if' Block - woher soll es in den 'elif' Blöcken kommen? – jonrsharpe
sagst du, ich sollte das Rückgabeergebnis von allen elif-Blöcken entfernen (und es im if-Block belassen)? – PineNuts0
Ich bin mir nicht sicher, ich weiß nicht genau, was Sie erwarten, ich ermutige Sie nur darüber nachzudenken, wie das funktionieren könnte. Wo * erwarten * Sie, dass 'Ergebnis' von 'if Zeile [' Empfehlung Nr. 1 ']! =' Kategorie_A 'kommt? – jonrsharpe