2017-12-19 3 views
-1

ich eine Spalte in meine Daten haben, die diese Art von Werten Wie löscht man Zeilen mit einem bestimmten Objekt in Pandas, Python?

ja

ja

In Python Pandas enthält

wie würde ich Identifizieren Sie die gesamte Zeile mit einer Buchstabenfolge und löschen oder löschen Sie dann die gesamte Zeile.

Dank

+0

df.drop (df [df [ 'col'] == 2] .index) –

+0

, dass nur scheint abgeschlossen Zeilen zurück? – KRidg

+0

Ich habe alle Zeilen gefüllt, die fehlende Werte hatten und es hat funktioniert !!! VIELEN DANK!! – KRidg

Antwort

1

IIUC:

df = df[~pd.to_numeric(df['col'], errors='coerce').isna()] 

oder

df = df[pd.to_numeric(df['col'], errors='coerce').notna()] 
+0

Ich versuchte beide und es kam mit diesem Fehler 'DataFrame' Objekt hat kein Attribut 'to_numeric' – KRidg

+0

@KRidg, haben Sie Ihren DataFrame als 'pd' benannt? 'pd' soll ein Alias ​​für Pandas-Modul sein ... – MaxU

+0

Nein, ich denke nicht, mein DataFrame hat einen komplett anderen Namen, den ich an Stelle von df gesetzt habe. Ich habe pd in der gleichen Position verlassen. – KRidg

0

Hier ist ein Weg, dies zu lösen. Ich habe Code hinzugefügt, um den DataFrame zu erstellen, die Zeichenfolgenwerte finden und sie dann löschen. df.drop gibt eine modifizierte Kopie des ursprünglichen df zurück, es sei denn, Sie geben inplace = True an. Wenn Sie möchten, können Sie den ursprünglichen Namen des df df = df.drop... zuweisen oder das Inplace-Argument verwenden.

import pandas as pd 
import numpy as np 
# build the df 
df = pd.DataFrame({'col_name' : [2, 2, 'yes', 2, 'yes']}) 
print(df) 

    col_name 
0  2 
1  2 
2  yes 
3  2 
4  yes 

# ask what are the types in column 
df.col_name.apply(type) 

0 <class 'int'> 
1 <class 'int'> 
2 <class 'str'> 
3 <class 'int'> 
4 <class 'str'> 
Name: col_name, dtype: object 

# you can see that the strings are in row 2 and 4 
# and drop them like this 
df.drop([2, 4], axis='rows') 

    col_name 
0  2 
1  2 
3  2 
Verwandte Themen