J'utilise des pandas 0.18.1 avec Python 2.7.x. J'ai un Dataframe vide que j'ai lu en premier. Je vois que les types de ces colonnes sont Y a-t-il un moyen de définir une option globale pour laisser pandas sait que pour les valeurs numériques, traitez-les par défaut comme pour Exemple: p> objet code> qui est ok. Lorsque j'affecte une ligne de données, le type de valeurs numériques passe à
float64 code>. Je m'attendais à
int code> ou
int64 code>. Pourquoi cela arrive-t-il?
int code> sauf si les données ont un
. code>? Par exemple,
[0 1.0, 2.] Code>, première colonne est
int code> mais les deux autres sont
float64 code>? P>
3 Réponses :
La pourquoi est presque certainement à voir avec la flexibilité et la vitesse. Juste parce que Pandas n'a vu qu'un entier dans cette colonne jusqu'à présent ne signifie pas que vous n'essayez pas d'ajouter un flotteur plus tard, ce qui nécessiterait des pandas de revenir en arrière et de changer le type pour toute cette colonne. Un flotteur est le type numérique le plus robuste / flexible. P>
Il n'y a pas de moyen global de remplacer ce comportement (dont je suis au courant), mais vous pouvez utiliser la méthode http://pandas.pydata.org/ Pandas-Docs / Stable / généré / Pandas.Dataframe.AsType.html P> astype code> pour modifier un fichier de données individuel. P>
Si vous lisez un fichier de données vide, vous pouvez lancer explicitement les types pour chaque colonne après la lecture. Si vous ne connaissez pas les noms de colonne de votre fichier de données vide, vous pouvez attribuer tout le tout en tant que int code>, puis laissez pandas le trier. p>
Il n'est pas possible pour les pandas de stocker des valeurs code> nan code> dans les colonnes entier. p>
Ceci fait code> float code> le choix par défaut évident pour le stockage des données, car dès que la valeur manquante résulte des pandas devraient changer le type de données de la colonne entière. Et les valeurs manquantes se présentent très souvent dans la pratique. P>
comme pour pourquoi em> c'est-à-dire, c'est une restriction héritée de NUMPY. Fondamentalement, les pandas doivent mettre de côté un motif de bits en particulier pour représenter mise à jour em> strong> p>
Nouvelles passionnantes dans Pandas 0.24. Integerarray est une fonctionnalité expérimentale mais pourrait rendre ma réponse originale obsolète. Donc, si vous lisez cela sur ou après le 27 févr. 2019, consultez le docs pour cette fonctionnalité. P> nan code>. Ceci est simple pour les nombres de points flottants et il est défini dans la norme IEEE 754. Il est plus gênant et moins efficace de le faire pour un entier de largeur fixe. P>