2016-08-11 7 views
1

Ich möchte einige Zeilen im Pandas Dataframe löschen.Entfernen bestimmter Zeilen in Pandas

ID    Value 

2012XY000   1 
2012XY001   1 
.     
. 
. 
2015AB000   4 
2015PQ001   5 
. 
. 
. 
2016DF00G   2 

Ich möchte Zeilen gelöscht werden, deren ID beginnt nicht mit 2015 Wie soll ich das tun?

Antwort

2

Verwendung startswith mit boolean indexing:

print (df.ID.str.startswith('2015')) 
0 False 
1 False 
2  True 
3  True 
4 False 
Name: ID, dtype: bool 

print (df[df.ID.str.startswith('2015')]) 
      ID Value 
2 2015AB000  4 
3 2015PQ001  5 

EDIT Kommentar:

print (df) 
      ID Value 
0 2012XY000  1 
1 2012XY001  1 
2 2015AB000  4 
3 2015PQ001  5 
4 2015XQ001  5 
5 2016DF00G  2 

print ((df.ID.str.startswith('2015')) & (df.ID.str[4] != 'X')) 
0 False 
1 False 
2  True 
3  True 
4 False 
5 False 
Name: ID, dtype: bool 

print (df[(df.ID.str.startswith('2015')) & (df.ID.str[4] != 'X')]) 
      ID Value 
2 2015AB000  4 
3 2015PQ001  5 
+0

Vielen Dank. Das funktioniert ziemlich gut. Noch eine zusätzliche Abfrage, wenn ich möchte, dass alle Zeilen mit 2015 starten, aber nicht 2015X exklusiv, wie mache ich das? –

+0

Wow. Danke vielmals. Danke für die schnellen Antworten :) –

0

Verwenden str.match mit Regex String r'^2015':

df[df.ID.str.match(r'^2015')] 

enter image description here

Um diejenigen auszuschließen, die danach eine X haben.

df[df.ID.str.match(r'^2015[^X]')] 

Die Regex r'^2015[^X]' übersetzt in

  • ^2015 - beginnen muss mit 2015
  • [^X] - Zeichen nach 2015 darf nicht X

betrachten die df

012.351.

enter image description here

dann

df[df.ID.str.match(r'^2015[^X]')] 

enter image description here

+0

Vielen Dank. Das funktioniert ziemlich gut. Noch eine zusätzliche Abfrage, wenn ich alle Zeilen mit Start 2015, aber nicht ausschließlich 2015X haben möchte, wie mache ich das? –

+0

Können Sie bitte erklären, wie funktioniert dieser Befehl? –

+0

Ja. Danke für die Erklärung. Vielen Dank: D Danke für die schnelle Antwort :) –

Verwandte Themen