[Vyriešiť problém str.contains ()] ValueError: nemôže indexovať s vektorom obsahujúcim hodnoty NA / NaN

Solve Problem Str



popis problému
Pri použití údajového rámca vykonajte nasledujúce operácie:

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

Účelom je zistiť všetky riadky, ktoré obsahujú znak „G“ v stĺpci riadkov v df, nastáva nasledujúci problém:



--------------------------------------------------------------------------- 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

Je zrejmé, že to znamená, že v stĺpci riadku sú hodnoty NA alebo NaN, takže Baidu, na internete existuje veľa metód, ktoré vás naučia, ako odstrániť hodnotu NA / NaN v stĺpci riadku.



Vymazanie riadku, ktorý obsahuje hodnotu NA / NaN v stĺpci riadku, však problém stále nevyrieši! ! Ako to spraviť?



Riešenie:
Je to veľmi jednoduché. V skutočnosti je pravdepodobné, že formát prvkov v stĺpci riadku nie je celý formát str, môže existovať formát int atď.,
Takže stačí zjednotiť formát riadkového stĺpca do formátu str!
Operácia je nasledovná:

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

Vyrieš ten problém! !