2017-11-09 20 views
0

自分のカスタムインポートスクリプトを使用して、Pandas DataframeからPostgres DBにデータをインポートしています。残念ながら、私のデータは整然としたものではなく、私の列のすべてのものがテキストとして解析されました。特定の列の値が数字ではないエントリを得る方法はありますか?私の計画は、それらのレコードを削除し、列を数値型に変換することですPostgres Query:数字ではない値を見つける

ありがとう!

+1

をあなたは 'is_numeric' https://stackoverflow.com/questions関数を作成することができます/ 16195986/isnumeric-with-postgresql –

答えて

3

は何の数字を持っていないレコードを取得し、その後、次の正規表現を使用する必要があります:

ここ
DELETE FROM myrecords WHERE record ~ '^[^0-9]+$'; 

を、角括弧の外^文字がフィールドの始まりを意味し、$文字が意味しますフィールドの終わりであり、その間のすべての文字が非数字であることが必要です。 +は、少なくとも1つのそのような文字があることを示します。空の文字列も許可すると、正規表現は^[^0-9]*$のようになります。

あなたは数字と小文字の文字が含まれるレコードをしたい場合は、私のような正規表現期待:

DELETE FROM myrecords WHERE record ~ '[0-9a-z]'; 
+0

最初の正規表現は ''^[0-9] + $ 'または' '^ \ d + $ '' –

+0

に短縮することができます。 – Macterror

+1

@HaleemurAliはいうまくいっています。\ dは任意の数字にマッチするメタ文字です。[0-9] '@Macterrorと同じですが、嬉しいです – AnouarZ

関連する問題