die Zeilen zu entfernen, für die die vierte Spalte ?
gleich sind, können Sie die Daten auswählen, die nicht gleich ?
sind.
# Test data
df = DataFrame({
'col0': [0, 1, 2, 3, 4],
'col1': [0, 1, 2, 3, 4],
'col2': [0, 1, 2, 3, 4],
'col3': [0, 1, 2, 3, 4],
'col4': [0, 1, 2, '?', '?']})
df.loc[df.iloc[:, 4] != '?']
col0 col1 col2 col3 col4
0 0 0 0 0 0
1 1 1 1 1 1
2 2 2 2 2 2
Wenn Sie die Zeilen beseitigen wollen, für die die vierte Spalte ?
enthält, dann ist es ein bisschen schwieriger, da Sie die ?
Charakter zu entkommen und einen Standardwert False
für die boolean Indizierung und schließlich die boolean zu arbeiten liefern Negation ~
.
df.loc[~df.iloc[:,4].str.contains('\?', na = False)]
col0 col1 col2 col3 col4
0 0 0 0 0 0
1 1 1 1 1 1
2 2 2 2 2 2
bearbeiten
Wenn die Spalte nur Zahlen enthält, können Sie auch die folgende Methode verwenden. Mit dem errors
Parameter coerce
wird in numerisch konvertiert, um NaN
für Werte zu erzeugen, die nicht konvertiert werden können. Dann einfach die Werte mit dropna
fallen lassen.
df.iloc[] = pd.to_numeric(df.iloc[:,4], errors='coerce')
# Or if you want to apply the transformation to the entire DataFrame
# df = df.apply(pd.to_numeric, errors='coerce')
df.dropna(inplace=True)
col0 col1 col2 col3 col4
0 0 0 0 0 0.0
1 1 1 1 1 1.0
2 2 2 2 2 2.0
Sind sie tatsächlich '?' (Die Zeichenfolge)? Möchten Sie die Zeile entfernen, wenn sie eine Spalte als solche enthält? –
Erreicht die 'DataFrame.dropna()' Methode das, was Sie tun möchten? –
'df [df.iloc [:, 4] .astype (str)! ="? "]'. Das heißt, wenn Spalte 4 Index 4 bedeutet. Andernfalls möchten Sie möglicherweise den Index 3 für Spalte 4 verwenden. – Abdou