您可以尝试首先
?在列中查找字符串,创建布尔掩码和最后过滤器行-使用布尔索引。如果需要将列转换为
float,请使用
astype:
print ~((df['X'] == '?' ) (df['Y'] == '?' ) | (df['Z'] == '?' ))0 False1 True2 False3 True4 Falsedtype: booldf1 = df[~((df['X'] == '?' ) | (df['Y'] == '?' ) | (df['Z'] == '?' ))].astype(float)print df1 X Y Z1 1 2 33 4 4 4print df1.dtypesX float64Y float64Z float64dtype: object
或者您可以尝试:
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 Z0 0 1 NaN1 1 2 32 NaN NaN 43 4 4 44 NaN 2 5print ((df['X'].notnull() ) & (df['Y'].notnull() ) & (df['Z'].notnull() ))0 False1 True2 False3 True4 Falsedtype: boolprint df[ ((df['X'].notnull() ) & (df['Y'].notnull() ) & (df['Z'].notnull() )) ].astype(float) X Y Z1 1 2 33 4 4 4
更好的是使用:
df = df[(df != '?').all(axis=1)]
要么:
df = df[~(df == '?').any(axis=1)]



