将 Pandas 系列导出为 JSON - numpy 类型错误
Posted
技术标签:
【中文标题】将 Pandas 系列导出为 JSON - numpy 类型错误【英文标题】:Exporting Pandas series as JSON - error with numpy types 【发布时间】:2013-09-07 02:24:45 【问题描述】:我想将一些行从 Pandas DataFrame 导出到 JSON。 但是,在导出列时出现错误:
TypeError: False is not JSON serializable
或
TypeError: 0 is not JSON serializable
我查看了我的数据,numpy.int64
和 numpy.bool_
出现了问题(numpy.float64
工作正常)。
例如,出现以下问题:
import pandas as pd
import simplejson as json
df = pd.DataFrame([[False,0],[True,1]], columns=['a','b'])
json.dumps(df.ix[0].to_dict())
(dict(df.ix[0])
也会发生同样的事情)。
是否有将 Pandas 系列导出为 JSON 的简单解决方法?
或者至少是一个将任何 numpy 类型强制为与 JSON 兼容的最接近类型的函数?
【问题讨论】:
【参考方案1】:DataFrame 有一个方法可以将自己导出到json
字符串:
>>> df.to_json()
'"a":"0":false,"1":true,"b":"0":0,"1":1'
也可以直接导出到文件中:
>>> df.to_json(filename)
【讨论】:
它适用于 DataFrames,谢谢。它也适用于系列吗?我收到OverflowError: Maximum recursion level reached
。
@PiotrMigdal 它确实适用于Series
。你能发布一个重现堆栈溢出的Series
对象吗?
@PhillipCloud 例如问题中的那个,即df.ix[0].to_json()
代表df = pd.DataFrame([[False,0],[True,1]], columns=['a','b'])
。
我收到了'"a":false,"b":0'
,正如预期的那样。那是在 pandas git
master 上,它可能有这个修复(而不是在 0.12 版本中)。让我看看。
@PhillipCloud 是的,这是 0.12 中的一个错误,但它已在 master 上修复。以上是关于将 Pandas 系列导出为 JSON - numpy 类型错误的主要内容,如果未能解决你的问题,请参考以下文章
将 pandas 数据帧转换为 json 对象 - pandas
将 pandas 数据框导出到 json 并返回到具有相同顺序的列的数据框