Je souhaiterais importer le csv suivant sous forme de chaînes non int64. Pandas read_csv le convertit automatiquement en int64, mais j’ai besoin de cette colonne comme chaîne.
ID 00013007854817840016671868 00013007854817840016749251 00013007854817840016754630 00013007854817840016781876 00013007854817840017028824 00013007854817840017963235 00013007854817840018860166 df = read_csv('sample.csv') df.ID >> 0 -9223372036854775808 1 -9223372036854775808 2 -9223372036854775808 3 -9223372036854775808 4 -9223372036854775808 5 -9223372036854775808 6 -9223372036854775808 Name: ID
Malheureusement, l’utilisation de convertisseurs donne le même résultat.
df = read_csv('sample.csv', converters={'ID': str}) df.ID >> 0 -9223372036854775808 1 -9223372036854775808 2 -9223372036854775808 3 -9223372036854775808 4 -9223372036854775808 5 -9223372036854775808 6 -9223372036854775808 Name: ID
Je veux juste répéter que cela fonctionnera chez les pandas> = 0.9.1:
In [2]: read_csv('sample.csv', dtype={'ID': object}) Out[2]: ID 0 00013007854817840016671868 1 00013007854817840016749251 2 00013007854817840016754630 3 00013007854817840016781876 4 00013007854817840017028824 5 00013007854817840017963235 6 00013007854817840018860166
Je crée un problème à propos de la détection des dépassements d’entiers également.
EDIT: Voir la résolution ici: https://github.com/pydata/pandas/issues/2247
Ce n’est probablement pas la manière la plus élégante de le faire, mais cela fait le travail.
In[1]: import numpy as np In[2]: import pandas as pd In[3]: df = pd.DataFrame(np.genfromtxt('/Users/spencerlyon2/Desktop/test.csv', dtype=str)[1:], columns=['ID']) In[4]: df Out[4]: ID 0 00013007854817840016671868 1 00013007854817840016749251 2 00013007854817840016754630 3 00013007854817840016781876 4 00013007854817840017028824 5 00013007854817840017963235 6 00013007854817840018860166
Remplacez simplement '/Users/spencerlyon2/Desktop/test.csv'
par le chemin d’access à votre fichier