Python:如何从Pandas列中删除所有非数值?

时间:2019-04-17 08:15:14

标签: python pandas

我有一个像下面这样的数据框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

我想要dropRooms中的所有非数值。 Rooms中的所有值现在都被视为str

1 个答案:

答案 0 :(得分:3)

to_numericerrors='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