È possibile provare prima la stringa di ricerca ?
in colonne, creare la maschera booleana e le ultime righe di filtro - utilizzare boolean indexing. Se avete bisogno di convertire le colonne di float
, utilizzare astype
:
print ~((df['X'] == '?') (df['Y'] == '?') | (df['Z'] == '?'))
0 False
1 True
2 False
3 True
4 False
dtype: bool
df1 = df[~((df['X'] == '?') | (df['Y'] == '?') | (df['Z'] == '?'))].astype(float)
print df1
X Y Z
1 1 2 3
3 4 4 4
print df1.dtypes
X float64
Y float64
Z float64
dtype: object
Oppure si può provare:
df['X'] = pd.to_numeric(df['X'], errors='coerce')
df['Y'] = pd.to_numeric(df['Y'], errors='coerce')
df['Z'] = pd.to_numeric(df['Z'], errors='coerce')
print df
X Y Z
0 0 1 NaN
1 1 2 3
2 NaN NaN 4
3 4 4 4
4 NaN 2 5
print ((df['X'].notnull()) & (df['Y'].notnull()) & (df['Z'].notnull()))
0 False
1 True
2 False
3 True
4 False
dtype: bool
print df[ ((df['X'].notnull()) & (df['Y'].notnull()) & (df['Z'].notnull())) ].astype(float)
X Y Z
1 1 2 3
3 4 4 4
'out = df.replace ({ '?': Numpy.nan}). Dropna() .astype (float) ' –
È la stessa della risposta in basso, ma molto bella con una sola riga. Grazie – Anonymous