2016-04-11 9 views
4

In Pandas Datenrahmen, wie den Wert einer Spalte bedingt zu Werten in einer anderen Spalte, die Teil einer Liste ist, füllen?Wie füllt man eine Spalte bedingt in eine andere Spalte in einer Liste?

Dies ist sehr ähnlich zu this SO question, aber wenn ich gelten:

df['type'] = np.where(df['food'] in ['apple', 'banana', 'kiwi'], 'fruit', 'oth. food') 

Ich habe einen Fehler:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). 

Ich nehme an der in Operator wurde mit Vektoren nicht außer Kraft gesetzt zu arbeiten ..

+0

Sie nach 'df [ 'type'] = np.where (df [ 'Lebensmittel']. Isin ([ 'Apfel', 'Banane', 'Kiwi']), 'Frucht', 'andere. Essen ') ' – EdChum

Antwort

4

sollte diese Arbeit

df['type'] = np.where(df['food'].isin(['apple', 'banana', 'kiwi']), 'fruit', 'oth. food') 
+1

:) nur 20 Sekunden ist zwischen unseren Posts. Nett. – jezrael

+0

@jezrael: Danke beides .. Ich würde gerne beides als angenommene Antworten hinzufügen ;-) – Antonello

+0

yeah, wenn du nur beides hinzufügen könntest :-) – MedAli

2

ich glaube, Sie isin verwenden können:

df['type'] = np.where(df['food'].isin(['apple', 'banana', 'kiwi']), 'fruit', 'oth. food') 
Verwandte Themen