[str.contains()の問題を解決する] ValueError:NA / NaN値を含むベクトルでインデックスを作成できません



Solve Problem Str



問題の説明
データフレームを使用する場合は、以下の操作を行ってください。

df[df.line.str.contains('G')]

目的は、dfの行列に文字「G」を含むすべての行を見つけることです。次の問題が発生します。



--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-3-10f8503f73f2> in <module>() ----> df.line.str.contains('G') D:Anaconda3libsite-packagespandascoreframe.py in __getitem__(self, key) 2983 2984 # Do we have a (boolean) 1d indexer? -> 2985 if com.is_bool_indexer(key): 2986 return self._getitem_bool_array(key) 2987 D:Anaconda3libsite-packagespandascorecommon.py in is_bool_indexer(key) 128 if not lib.is_bool_array(key): 129 if isna(key).any(): --> 130 raise ValueError(na_msg) 131 return False 132 return True ValueError: cannot index with vector containing NA / NaN values

明らかに、それは行列にNAまたはNaN値があることを意味するので、Baidu、行列のNA / NaN値を削除する方法を教える方法はインターネット上にたくさんあります。

ただし、行列にNA / NaN値が含まれている行を削除しても、問題は解決しません。 !どうやるか?



解決:
とても簡単です。実際、行列の要素の形式はすべてstr形式ではない可能性があり、int形式などがある可能性があります。
したがって、行列の形式をstr形式に統合するだけです。
操作は次のとおりです。

df['line'] = df['line'].apply(str) #Change the format of the line column to str df[df.line.str.contains('G')] #Execute your corresponding statement

問題を解く! !