max_gust_speed = data[(data['Spd of Max Gust (km/h)'].astype(float) >= 50.0)]
此列中的大多数数据是整数或浮点数。但是,还有一些其他值(例如字符串'< 32')
是否有可能在这一行中处理这些边缘情况,或者我是否需要事先检查数据帧并转换它们?
我可以强行进入这条线吗?
答案 0 :(得分:2)
使用@ sacul的样本数据(Thx)
您可以使用toDataURL
删除非数字字符
replace
在这里,我们从'< 32'保留了32。这可能是也可能不是OP的意图。但这就是你如何做到的。
并且g = 'Spd of Max Gust (km/h)'
n = pd.to_numeric(df[g].replace('[^\.\d-]', '', regex=True))
df[n >= 50]
Spd of Max Gust (km/h)
0 75
1 80.2
看起来像
n
答案 1 :(得分:1)
这取决于您要对其执行的操作,但您可以将pd.to_numeric()
与errors = 'coerce'
一起使用。例如:
df = pd.DataFrame({'Spd of Max Gust (km/h)':[75, 80.2, 12, '<32']})
Spd of Max Gust (km/h)
0 75
1 80.2
2 12
3 <32
>>> pd.to_numeric(df['Spd of Max Gust (km/h)'], errors='coerce')
0 75.0
1 80.2
2 12.0
3 NaN
所以要应用你的过滤器:
df[(pd.to_numeric(df['Spd of Max Gust (km/h)'], errors='coerce').astype(float) >= 50.0)]
给你这个:
Spd of Max Gust (km/h)
0 75
1 80.2