Mit einer if-Anweisung in einen dataframe mit lambda-Funktionen

Ich versuche eine neue Spalte hinzufügen, um ein dataframe basiert auf einer if-Anweisung abhängig von den Werten der beiden Spalten. d.h. wenn Spalte x == Keine dann die y-Spalte andere Spalte x

unten ist das Skript, das ich geschrieben habe, aber nicht funktioniert. irgendwelche Ideen?

dfCurrentReportResults['Retention'] =  dfCurrentReportResults.apply(lambda x : x.Retention_y if x.Retention_x == None else x.Retention_x)

Auch ich bekam diese Fehlermeldung:
AttributeError: ("'- Serie,' Objekt hat kein Attribut 'Retention_x'", u'occurred bei index BUSINESSUNIT_NAME')

fyi: BUSINESSUNIT_NAME ist die erste Spalte name

Zusätzliche Info:

Meine Daten ausgedruckt sieht wie folgt aus, und ich will hinzufügen einer 3. Spalte einen Wert, wenn es einem sonst halten NaN.

   Retention_x  Retention_y
0            1          NaN
1          NaN     0.672183
2          NaN     1.035613
3          NaN     0.771469
4          NaN     0.916667
5          NaN          NaN
6          NaN          NaN
7          NaN          NaN
8          NaN          NaN
9          NaN          NaN

UPDATE:
Am Ende wurde ich mit Fragen verweisen auf die Null oder ist Null in mein dataframe die Letzte Zeile des code I wird auch verwendet, einschließlich der Achse = 1 meine Frage beantwortet.

 dfCurrentReportResults['RetentionLambda'] = dfCurrentReportResults.apply(lambda x : x['Retention_y'] if pd.isnull(x['Retention_x']) else x['Retention_x'], axis = 1)

Dank @EdChum, @strim099 und @aus_lacy für all deinen input. Als mein Datensatz größer wird, kann ich wechseln, um das np.wo option, wenn ich merke, die performance-Probleme.

  • ist None ein string oder ein NaN? Und könnten Sie eine Probe Ihres Daten-frame, so können wir besser Debuggen irgendwelche Probleme?
  • meine Verwendung der Keiner war im Grunde ein Versuch, um zu ermitteln, ob der Wert leer, so dass ich denke, es ist ein NaN und ist Keiner?
  • welche Spalte fordern Sie Ihre apply auf? Eine Probe der Daten helfen würde, erhalten Sie eine Antwort viel schneller.
  • Ich möchte die Funktion für die neue Spalte ein und erhalten die Ergebnisse, die durch den Verweis auf die anderen beiden Spalten. Die Daten ist ein bisschen chaotisch und auch vertraulich, ich werde versuchen und klopfen gemeinsam einige einfache Daten für die Frage.
InformationsquelleAutor IcemanBerlin | 2015-01-08
Schreibe einen Kommentar