So löschen Sie die gesamte Zeile, wenn die Werte in einer Spalte NaN sind [geschlossen]


8

Ich möchte alle Zeilen löschen, die NaN-Werte für eine Spalte enthalten. Nehmen wir an, ich habe einen Datensatz wie diesen:

Age  Height  Weight  Gender
12    5'7     NaN     M
NaN   5'8     160     M
32    5'5     165     NaN
21    NaN     155     F
55    5'10    170     NaN

Ich möchte alle Zeilen entfernen, in denen 'Geschlecht' NaN-Werte hat. Die Ausgabe möchte ich:

Age  Height  Weight Gender
12   5'7     NaN     M
NaN  5'8     160     M
21   NaN     155     F

Danke im Voraus!


2
Sie müssen uns wirklich sagen, in welcher Datenstruktur es sich befindet. Ist es beispielsweise SQL?
Paul Childs

Antworten:


15

Nun, wenn der Datensatz nicht zu groß ist, würde ich vorschlagen, Pandas zu verwenden, um die Daten zu bereinigen. Sie müssten es also zuerst tun

Python2

python2 -m pip install pandas

Python3

python3 -m pip install pandas

Wenn Sie Anaconda bereits installiert haben, können Sie den obigen Schritt überspringen. Als nächstes können Sie eine IDE (wie jupyter) durchlaufen oder über die Shell die folgenden Befehle eingeben

import pandas as pd
df = pd.read_csv("filename", dtype=str)
#or if excel file
#df = pd.read_excel("filename", dtype=str)

df = df[pd.notnull(df['Gender'])]

Dann möchten Sie Ihr Ergebnis in einer Datei mit speichern

df.to_csv("newfile"); 

5

Wenn Sie an Python Dataframe arbeiten, versuchen Sie dies bitte.

import pandas as pd
df = df[np.isfinite(df['Gender'])]

Oder Sie können notnull anstelle von isfinite verwenden.

import pandas as pd
df = df[pd.notnull(df['Gender'])]
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.