我想要删除任何列中的所有行(或不带所有行)问号符号。我也想将元素更改为float类型。在“熊猫”数据框的任意列中删除具有“问号”值的行
输入:
X Y Z
0 1 ?
1 2 3
? ? 4
4 4 4
? 2 5
输出:
X Y Z
1 2 3
4 4 4
优选使用大熊猫数据帧的操作。
我想要删除任何列中的所有行(或不带所有行)问号符号。我也想将元素更改为float类型。在“熊猫”数据框的任意列中删除具有“问号”值的行
输入:
X Y Z
0 1 ?
1 2 3
? ? 4
4 4 4
? 2 5
输出:
X Y Z
1 2 3
4 4 4
优选使用大熊猫数据帧的操作。
您可以先尝试在列中找到字符串?
,创建布尔掩码和最后一个筛选器行 - 使用boolean indexing。如果你需要转换列float
,使用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
或者你可以尝试:
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)' –
它与下面的答案是一样的,但是对于一行代码非常好。谢谢 – Anonymous