Quand je convertir un tableau numpy à un pandas géants de trame de données pandas géants change UInt64 types de types d'objets si l'entier est supérieur à 2^63 - 1.Pourquoi les pandas convertissent-ils un entier non signé supérieur à 2 ** 63-1 en objets?
import pandas as pd
import numpy as np
x = np.array([('foo', 2 ** 63)], dtype = np.dtype([('string', np.str_, 3), ('unsigned', np.uint64)]))
y = np.array([('foo', 2 ** 63 - 1)], dtype = np.dtype([('string', np.str_, 3), ('unsigned', np.uint64)]))
print pd.DataFrame(x).dtypes.unsigned
dtype('O')
print pd.DataFrame(y).dtypes.unsigned
dtype('uint64')
C'est gênant que je ne peux pas écrire les données cadre dans un fichier hdf dans le format de table:
pd.DataFrame(x).to_hdf('x.hdf', 'key', format = 'table')
Ouput:
TypeError: Impossible de sérialiser la colonne [unsigned] parce que ses données contenus sont l'objet [entier] DTYPE
Quelqu'un peut-il expliquer la conversion de type?
C'est un bug ouvert: https://github.com/pydata/pandas/issues/11846#event-492663948 Voir ma réponse pour un travail ound – imp9