Pythonでカンマ区切りされている文字列表記の数字を数値データに変換する方法
ダウンロードしたcsvのデータでは数値をカンマ区切りで表現されており、それをint()やfloat()で数値に変換できなかったので、その対応のメモです。
例えば、1,234(千二百三十四)のように、3桁ごとにカンマを使用して数値を表現することはよくありますが、これを文字列データから数値データに変換しようとしてint("1,234")のようにしてもエラーになってしまいます。
解決策としては、カンマを取り除いてから変換してやる必要があります。
number = "1,234,567" print(type(number)) #->この状態では<class 'str'>となっています。
仮に、これをintで変換しようとすると、
number = "1,234,567" int(number)
以下のようなエラーが出てしまいます。
Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: '1,234,567'
うーん残念。
解決策はカンマを取り除いて処理
以下のように対応すると数値に変換ができました。(他にもっと簡単な方法があるのかもしれませんが。。。)
number = "1,234,567" number = number.replace(",","")#カンマを削除してます print(type(number)) #->この状態では<class 'str'>となっています。 print(number) #出力してみると"1234567"となっています。 transformed1 = int(number) transformed2 = float(number) #無事にエラーなく変換できました。 #出力してみると print(transformed1) #1234567 print(transformed2) #1234567.0 #となっています。