2017-06-17 6 views
1

Wie kann ich eine Zeile in einem Pandas Dataframe löschen, basierend auf einem Zellenwert ohne Angabe eines bestimmten Spaltennamens?Zeile aus Pandas DataFrame löschen basierend auf Zellenwert

Zum Beispiel:

Ich habe diesen Datenrahmen, und ich möchte alle Zeilen löschen, wenn eine Zelle den Wert ‚d‘ enthält.

A B C D 
1 1 2 d 5 
2 1 3 4 0 
3 d 2 1 2 
4 3 2 1 7 

So habe ich am Ende mit dem Datenrahmen bis

A B C D 
2 1 3 4 0 
4 3 2 1 7 

Gibt es eine Möglichkeit, dies zu achive? Meine Google-Kenntnisse haben nur Lösungen gefunden, bei denen ein bestimmter Spaltenname erforderlich ist.

Antwort

5

Sie können es auf diese Weise tun:

df = df[~df.select_dtypes(['object']).eq('d').any(1)] 

Ergebnis:

In [23]: df 
Out[23]: 
    A B C D 
2 1 3 4 0 
4 3 2 1 7 
3

Eine weitere Möglichkeit, es tun könnte astype, ne und all zu verwenden:

df[df.astype(str).ne('d').all(axis=1)] 

Ausgang:

A B C D 
2 1 3 4 0 
4 3 2 1 7 

Ein anderer Weg:

df.where(df.values != 'd').dropna() 

Ausgang:

A B C D 
2 1 3 4 0 
4 3 2 1 7 
Verwandte Themen