2017-02-22 3 views
2

Ich habe ein Beispiel für Datenrahmen df:ändert Wert der Spalte unter der Bedingung

Col1  Col2 
    a  "some string AXA some string " 
    b  "some string2" 

Ich mag: wenn df.Col2 enthält „AXA“ dann den Wert auf 1 ändern, wenn nicht, dann ändern Also auf 0 ich:

Col1  Col2 
    a   1 
    b   0 

ich habe versucht, so etwas wie,

if "AXA" in df['Col2']: 
    df['Col2'] = 1 

oder i f Ich kann etwas tun wie

Vielen Dank für Ihre Hilfe!

+0

ich Sie Frage löschen sehen 15 Minuten vorher. Finden Sie eine Lösung? – jezrael

+0

Ja, ich habe den Fehler in meinem Code gefunden :) – datascana

+0

ok, also viel Glück! – jezrael

Antwort

3

Sie str.contains für boolean mask verwenden können und werfen dann int:

print (df.Col2.str.contains('AXA')) 
0  True 
1 False 
Name: Col2, dtype: bool 


df['Col2'] = df.Col2.str.contains('AXA').astype(int) 
print (df) 
    Col1 Col2 
0 a  1 
1 b  0 

EDIT: Wenn die Ausgabe von 2 Bedingungen schaffen müssen, ist am schnellsten Doppel numpy.where verwenden:

print (df) 
    Col1       Col2 
0 a some string AXA some string 
1 a some string AXE some string 
2 b     some string2 

df['Col2'] = np.where(df.Col2.str.contains('AXA'), 1, 
      np.where(df.Col2.str.contains('AXE'), 2, 0)) 
print (df) 
    Col1 Col2 
0 a  1 
1 a  2 
2 b  0 
+0

Es hat funktioniert! Als Plus, wenn ich haben will: AXA = 1, AX = 2, andere = 0, kann ich die gleiche Methode verwenden? – datascana

+0

Bitte überprüfen Sie die bearbeitete Antwort. – jezrael

+0

Es funktionierte wie ein Zauber und wartete auf die Abklingzeit, um deine Antwort zu bestätigen – datascana

Verwandte Themen