Les Pandas d'erreur “ne Peut utiliser .str accesseur avec les valeurs de chaîne”
J'ai le texte suivant fichier d'entrée:
"Name",97.7,0A,0A,65M,0A,100M,5M,75M,100M,90M,90M,99M,90M,0#,0N#,
Et je les lis avec:
#!/usr/bin/env python
import pandas as pd
import sys
import numpy as np
filename = sys.argv[1]
df = pd.read_csv(filename,header=None)
for col in df.columns[2:]:
df[col] = df[col].str.extract(r'(\d+\.*\d*)').astype(np.float)
print df
Cependant, j'obtiens l'erreur
df[col] = df[col].str.extract(r'(\d+\.*\d*)').astype(np.float)
File "/usr/local/lib/python2.7/dist-packages/pandas/core/generic.py", line 2241, in __getattr__
return object.__getattribute__(self, name)
File "/usr/local/lib/python2.7/dist-packages/pandas/core/base.py", line 188, in __get__
return self.construct_accessor(instance)
File "/usr/local/lib/python2.7/dist-packages/pandas/core/base.py", line 528, in _make_str_accessor
raise AttributeError("Can only use .str accessor with string "
AttributeError: Can only use .str accessor with string values, which use np.object_ dtype in pandas
Cela a fonctionné dans les pandas 0.14 mais ne fonctionne pas dans les pandas 0.17.0.
OriginalL'auteur eleanora | 2015-11-13
Vous devez vous connecter pour publier un commentaire.
Ce qui se passe parce que votre dernière colonne est vide, donc cela devient converti à
NaN
:Si vous tranchez votre gamme jusqu'à la dernière ligne, puis il travaille:
Alternativement, vous pouvez simplement sélectionner les cols qui sont
object
dtype et exécuter le code (en ignorant le premier col que c'est le Nom de l'entrée):présent depuis
0.14.1
Il donne l'avertissement
/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:2: FutureWarning: currently extract(expand=None) means expand=False (return Index/Series/DataFrame) but in a future version of pandas this will be changed to expand=True (return DataFrame)
OriginalL'auteur EdChum
J'ai eu cette erreur tout en travaillant dans Eclipse. Il s'est avéré que le projet de l'interprète était en quelque sorte (après une mise à jour je crois) reset pour Python 2.7. Le paramètre de retour à Python 3.6 résolu ce problème. Tout cela a abouti à plusieurs accidents, redémarre et les avertissements. Après plusieurs minutes d'ennuis, il semble fixé maintenant.
Même si je sais que ce n'est pas une solution au problème posé ici, j'ai pensé qu'il pourrait être utile pour les autres, comme je suis venu à cette page après une recherche pour cette erreur.
OriginalL'auteur SPRBRN
Dans ce cas, nous devons utiliser le
str.replace()
méthode sur cette série, mais d'abord nous devons nous convertir enstr
type:OriginalL'auteur Knowledge Elegance