панды астип питон бул вместо numpy.bool_ - PullRequest
0 голосов
/ 13 февраля 2019

Мне нужно преобразовать кадр данных pandas в объект JSON.

Однако

json.dumps(df.to_dict(orient='records'))

завершается ошибкой, поскольку логические столбцы не сериализуемы в JSON, поскольку они имеют тип numpy.bool_.Теперь я попробовал df['boolCol'] = df['boolCol'].astype(bool), но это все равно оставляет тип полей numpy.bool_, а не pyhton bool, который сериализует в JSON без проблем.

Любые предложения о том, как преобразовать столбцы без циклического прохождениякаждая запись и ее преобразование?

Спасибо

РЕДАКТИРОВАТЬ:

Это часть полной очистки данных в виде фреймов различного контента, поэтому они могут использоваться в качестве полезной нагрузки JSON дляAPI.Следовательно, в настоящее время у нас есть что-то вроде этого:

for cols in df.columns:
    if type(df[cols][0]) == pd._libs.tslibs.timestamps.Timestamp:
        df[cols] = df[cols].astype(str)
    elif type(df[cols]) == numpy.bool_:
        df[cols] = df[cols].astype(bool) #still numnpy bool afterwards!

1 Ответ

0 голосов
/ 13 февраля 2019

Только что проверил, и проблема, похоже, вызвана параметром orient = 'records'.Кажется, вам нужно установить его в опцию (например, список) и преобразовать результаты в ваш предпочтительный формат.

import numpy as np
import pandas as pd
column_name = 'bool_col'

bool_df = pd.DataFrame(np.array([True, False, True]), columns=[column_name])

list_repres = bool_df.to_dict('list')
record_repres = [{column_name: values} for values in list_repres[column_name]]

json.dumps(record_repres)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...