検索
[python]文字列が数字(小数含む)かどうか判定する
- M.R

- 2020年9月3日
- 読了時間: 1分
やりたいこと
与えられた文字列が数字かどうか判定したい。
問題点
pythonには文字列が数字かどうか判定するisnumeric()というメソッドがあるが、小数の場合は"."が文字と判定されてしまう。
"1".isnumeric()
# True
"1.2".isnumeric()
# False解決策
小数を判定してくれるメソッドは無いようなので、自作する。
float()でキャストして、例外が発生した場合は文字列と判定する。
def is_float(x):
try:
y=float(x)
return True
except:
return Falseis_float("1.2")
# True
is_float("a")
# False応用例
自分がこの問題に遭遇したのは、csvファイルからデータを読み込んで処理しているときだった。データがない部分が文字列の""になっていたり、"要確認"みたいなコメントがしてあったりする「汚い」データファイルだった。そのような場合にデータが数字の部分(もちろん小数を含む)を取り出すために上記メソッドを利用した。
import pandas as pd
#データ読み込み
df=pd.read_csv('data.csv')
#数字の部分だけ取り出す
df=df[df['data1'].map(is_float)]





コメント