Compte tenu du fichier:Pandas lecture NULL comme NaN flottant au lieu de str
$ cat test.csv
a,b,c,NULL,d
e,f,g,h,i
j,k,l,m,n
Lorsque la 3ème colonne est à traiter comme str
.
Quand je l'ai fait une fonction de chaîne sur la colonne, pandas
a lu la NULL
str comme un flotteur NaN
:
>>> import pandas as pd
>>> df = pd.read_csv('test.csv', names=[0,1,2,3,4], dtype={0:str, 1:str, 2:str, 3:str, 4:str})
>>> df[3].apply(str.strip)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.5/site-packages/pandas/core/series.py", line 2355, in apply
mapped = lib.map_infer(values, f, convert=convert_dtype)
File "pandas/_libs/src/inference.pyx", line 1569, in pandas._libs.lib.map_infer (pandas/_libs/lib.c:66440)
TypeError: descriptor 'strip' requires a 'str' object but received a 'float'
Pour vérifier:
>>> for i in df[3]:
... print (type(i), i)
...
<class 'float'> nan
<class 'str'> h
<class 'str'> m
J'ai spécifié le dtype
lors de l'initialisation mais d'une manière ou d'une autre il a été dépassé.
Comment forcer le type d'une colonne spécifique à être réparé?
Est-il possible de trouver automatiquement ces NaN
flotteurs anormaux et puis revenir à 'NULL'
chaîne?
BTW, est-ce un bug 'pandas'? Ou une caractéristique? – alvas
Une caractéristique, c'est: P – alvas