Pandas Series编写和读取json数据给出了带有to_json和read_json的ValueError

时间:2018-04-30 17:18:57

标签: python json pandas series

使用to_json从pandas.Series对象向json写入数据时,然后使用pandas.read_json读取该数据,我收到以下ValueError

import pandas as pd
js = pd.Series([1, 2, 3], index=list('abc')).to_json()
js
# out: '{"a":1,"b":2,"c":3}'

pd.read_json(js)
# Traceback ... 
# ValueError: If using all scalar values, you must pass an index

显然因为json数据只包含index:value对,read_json函数并不知道将键解释为索引。

我还根据docs尝试了以下orient选项,这导致了不同的ValueError

js = pd.Series([1, 2, 3], index=list('abc'), name='mydata').to_json(orient='split')
js
# out: '{"name":"mydata","index":["a","b","c"],"data":[1,2,3]}'
pd.read_json(js, orient='split')
# Traceback ... 
# ValueError: JSON data had unexpected key(s): name

我的问题是:如何配置Series.to_json以与pd.read_json兼容?这是改进系列默认json写入/读取行为的错误/机会吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

简单修复,使用typ参数:

pd.read_json(js, typ='series')

a    1
b    2
c    3
dtype: int64

它是“typ”而不是“type”,以免混淆type内置!