環境情報
- MacBook Air (11-inch, Early 2015)
- macOS バージョン 11.6(20G165)
- Python 3.8.8(64bit版)
エラー発生の経緯
Pythonで条件抽出を行おうとした際、以下のエラーが発生しました。
TypeError: '>=' not supported between instances of 'str' and 'int'
このエラーは、データ型に関する典型的なエラーの一つです。
実際に実行したコマンド
diff['c00'] >= 180
このコードを実行した際に、TypeErrorが発生しました。
エラーの原因
エラーの原因は、
比較演算子 ‘>=’ を使った際に、左右のデータ型が異なっていたことです。
具体的には、
diff['c00']
はobject型(実態は文字列型 str)180
は整数型(int型)
であったため、
Pythonが文字列と整数を比較できずエラーになりました。
Pythonでは、比較演算子(>=
など)を使用する場合、
両方のデータ型が一致している必要があります。
対処方法|型を統一する
エラーを解消するためには、diff['c00']
のデータ型をint型に変換する必要があります。
まず、以下のコードで型変換を行いました。
diff['c00'] = diff['c00'].astype('int')
これで、diff['c00']
は整数型(int型)に統一されました。
その後、改めて条件式を実行しました。
diff['c00'] >= 180
この時点で、エラーは消えました。
さらに|条件抽出の実行
上記のままだと、True
とFalse
が並ぶだけで、
実際に抽出されたデータは得られません。
条件に合致するデータを取り出すためには、
条件式を角括弧[]
で囲んで抽出します。
正しくは次のように記述します。
diff = diff[diff['c00'] >= 180]
これで、c00
列の値が180以上のデータだけが抽出され、
新たなdiff
に格納されます。
まとめ|比較演算は「データ型の一致」が基本
今回発生した**TypeError: ‘>=’ not supported between instances of ‘str’ and ‘int’**は、
- 比較対象のデータ型が異なっていた(文字列型と整数型)
- 事前に型を揃えることで解消できた
という流れでした。
Pythonでは、特にPandasを扱う際、
**型の自動推論(object型読み込み)**が原因でこの種のエラーが起こりやすいため、
必要に応じてastype()
を使い、明示的に型を変換する習慣を持つと安心です。
型は難しいですが、確実に理解しておくと、
今後のデータ処理や分析作業が非常にスムーズになります。