dtype изменяется при использовании DataFrame.to_dict

У меня есть столбец uint64 в моем DataFrame, но когда я конвертирую этот DataFrame в список python dict, используя DataFrame.to_dict('record') , то, что ранее uint64 получает волшебным образом преобразуется в float:

 In [24]: mid['bd_id'].head() Out[24]: 0 0 1 6957860914294 2 7219009614965 3 7602051814214 4 7916807114255 Name: bd_id, dtype: uint64 In [25]: mid.to_dict('record')[2]['bd_id'] Out[25]: 7219009614965.0 In [26]: bd = mid['bd_id'] In [27]: bd.head().to_dict() Out[27]: {0: 0, 1: 6957860914294, 2: 7219009614965, 3: 7602051814214, 4: 7916807114255} 

Как я могу избежать этого странного поведения?

Обновить

как ни странно, если я использую to_dict() вместо to_dict('records') , столбец bd_id будет иметь тип int:

 In [43]: mid.to_dict()['bd_id'] Out[43]: {0: 0, 1: 6957860914294, 2: 7219009614965, ... 

2 Solutions collect form web for “dtype изменяется при использовании DataFrame.to_dict”

Это потому, что в другом столбце есть float. Более конкретно to_dict('records') реализуется с использованием атрибута values для фрейма данных, а не для самих столбцов, и это реализует «неявное повышение», в вашем случае конвертирование uint64 в float.

Если вы хотите обойти эту ошибку, вы можете явно указать свою фреймворк данных в тип данных object :

 df.astype(object).to_dict('record')[2]['bd_id'] Out[96]: 7602051814214 

Кстати, если вы используете IPython и хотите посмотреть, как функция реализована в библиотеке, вы можете ее разгрузить, поставив ?? в конце вызова метода. Для pd.DataFrame.to_dict?? мы видим

  ... elif orient.lower().startswith('r'): return [dict((k, v) for k, v in zip(self.columns, row)) for row in self.values] 

Вы можете использовать это

 from pandas.io.json import dumps import json output=json.loads(dumps(mid,double_precision=0)) 
  • Измените значение столбца Pandas DataFrame на основе другого значения столбца
  • Что означает термин «вещание» в документации Pandas?
  • Средняя линия над строкой с пандами и matplotlib
  • Потеря времени в использовании зоны безопасности при сохранении гиаррхических панд DatetimeIndex для hdf5 в Python
  • Автоматический (виски-чувствительный) ylim в ящиках
  • Передача аргументов в roll_apply
  • Поиск верхних N столбцов для каждой строки в кадре данных
  • Использовать разделитель нескольких символов в Python Pandas to_csv
  • Изменение одного индекса серии
  • Как создать новые строки в кадре данных pandas, содержащем слова в строке существующей строки?
  • Объединяйте данные о кадрах панд, где одно значение находится между двумя другими
  •  
    Interesting Posts for Van-Lav

    Элементы исчезают из поля со списком, когда я читаю их из модели

    Как сделать текст strikethough в Sphinx

    Распаковка звезды Python для версии 2.7

    Почему я не могу «сохранить как» файл Excel из моего кода на Python?

    Найти все перестановки строк в Python

    Генерировать «случайную» матрицу определенного ранга по фиксированному множеству элементов

    scipy и numpy install на linux без root

    Как обозначить полоски сложенного штрихового графика из панды DataFrame?

    Python pandas resample добавлены даты, отсутствующие в исходных данных

    Временная сложность кода python для поиска самого длинного слова, которое может быть сделано из других слов в списке

    Python PyGOobject treeview: подтвердить редактирование после перемещения между ячейками с помощью клавиши Tab

    matplotlib – Развернуть строку с указанной шириной в блоке данных?

    Как исключить значение в ModelMultipleChoiceField?

    Как получить разделитель переменных среды PATH в Python?

    Как использовать функцию split для файла в python?

    Python - лучший язык программирования в мире.