我有一个像下面这样的数据框df
Rooms BFS
0 3.5 4201
1 1.5 4201
2 NA 4201
3 NA 4201
4 5.5 4201
5 5 4201
6 4.5 4201
7 3 4201
8 4201
9 3 4201
我想要drop
列Rooms
中的所有非数值。 Rooms
中的所有值现在都被视为str
答案 0 :(得分:3)
将to_numeric
与errors='coerce'
和Series.notna
结合使用以进行boolean indexing
的过滤:
df = df[pd.to_numeric(df['Rooms'],errors='coerce').notna()]
print (df)
Rooms BFS
0 3.5 4201
1 1.5 4201
4 5.5 4201
5 5 4201
6 4.5 4201
7 3 4201
9 3 4201
如果输出中需要数字,请先分配给同一列,然后使用DataFrame.dropna
:
df['Rooms'] = pd.to_numeric(df['Rooms'],errors='coerce')
df = df.dropna(subset=['Rooms'])
print (df)
Rooms BFS
0 3.5 4201
1 1.5 4201
4 5.5 4201
5 5.0 4201
6 4.5 4201
7 3.0 4201
9 3.0 4201