[python]文字列が数字(小数含む)かどうか判定する
やりたいこと
与えられた文字列が数字かどうか判定したい。
問題点
pythonには文字列が数字かどうか判定するisnumeric()というメソッドがあるが、小数の場合は"."が文字と判定されてしまう。
"1".isnumeric()
# True
"1.2".isnumeric()
# False
解決策
小数を判定してくれるメソッドは無いようなので、自作する。
float()でキャストして、例外が発生した場合は文字列と判定する。
def is_float(x):
try:
y=float(x)
return True
except:
return False
is_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)]
最新記事
すべて表示概要 pythonでデータ解析を行っている。解析自体はpandasを用いて行い、最終結果はpandas.DataFrameの形式で保持されている。 この結果を他のアプリケーションで利用するため、json形式でファイル出力したい。 やり方 1...
現象 raspberry piでfirestoreをimportしようとするとタイトルのエラーが発生。 from from firebase_admin import firestore ImportError: Failed to import the Cloud...
概要 フィッティングを行いたい場合、pythonならばscipy.optimize.leastsqなどでできます。 しかし、フィッティングを行う場合、フィッティングパラメータに条件を付けたい場合も多々あります。 例えば、下記のようにパラメータa、bは共に正の範囲で最適な値を...
Comments