2016-06-23 6 views
1

Ich habe DatenWie Zeichenfolge in df Iterieren Python mit

     date     id   request 
0  2016-06-17 09:25:05 [email protected] GET HTTP/1.1 
1  2016-06-17 09:25:07 [email protected]  POST HTTP/1.1 
2  2016-06-17 09:25:47 [email protected] CONNECT HTTP/1.1 
3  2016-06-17 09:25:47 [email protected]  POST HTTP/1.1 
4  2016-06-17 09:25:49 [email protected] CONNECT HTTP/1.1 

I String und 'GET' not in df['request'] I Zeichenfolge löschen von df wollen laufen müssen.

Wunsch Ausgang

   date     id   request 
0  2016-06-17 09:25:05 [email protected] GET HTTP/1.1 

Ich versuche df = df['GET' in df.request] aber kehrt

KeyError: False

Antwort

2

Sie müssen boolean indexing mit mask von str.contains erstellt:

print (df.request.str.contains('GET')) 
0 2016-06-17  True 
1 2016-06-17 False 
2 2016-06-17 False 
3 2016-06-17 False 
4 2016-06-17 False 

print (df[df.request.str.contains('GET')]) 
        date     id  request 
0 2016-06-17 09:25:05 [email protected] GET HTTP/1.1 

EDIT von Kommentar:

Für Spalte size Verwendung [] Vergleich, weil size Funktion ist:

df_upd = df_upd[df_upd['size'].astype(int) > 3000] 
+0

Können Sie sagen, warum 'df_upd = df_upd [int (df_upd.size)> 3000]' 'return keyerror'? Ich muss auch Größe vergleichen (ich habe diese Spalte), und wenn es weniger als 3000, löschen Sie diese Zeichenfolge – ldevyataykina

+0

Sie brauchen ['astype'] (http://pandas.pydata.org/pandas-docs/stable/generated/ pandas.Series.astype.html) zum Umwandeln in 'int' -' df_upd = df_upd [df_upd.size.astype (int)> 3000] ' – jezrael

+0

es gibt auch' KeyError: True' zurück – ldevyataykina

Verwandte Themen