Ich habe einen Datenrahmen wie folgt aus:np.where in Pandas, für leere Listen Überprüfung
df = pd.DataFrame({'var1':['a','b','c'],
'var2':[[],[1,2,3],[2,3,4]]})
Ich möchte eine dritte Spalte erstellen, die den Wert in var1 gibt, wenn die entsprechende Liste in var2 leer ist, und andernfalls das erste Element der Liste in var2. Also mein beabsichtigtes Ergebnis ist:
target = pd.DataFrame({'var1':['a','b','c'],
'var2':[[],[1,2,3],[2,3,4]],
'var3':['a',1,2]})
Ich habe versucht, mit np.where wie folgt aus:
df['var3'] = np.where(len(df['var2'])>0 , df['var2'][0], df['var1'])
Aber es scheint, die Länge der gesamten Spalte werden Überprüfung anstatt die Länge der Liste innerhalb jeder Zeile der Spalte. Wie kann ich die Bedingung auf jede Zeile anwenden?
Ich habe das gleiche Problem, wenn ich bool (df ['var2']) als meine Bedingung verwende.