使用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写入/读取行为的错误/机会吗?
感谢您的帮助!
答案 0 :(得分:4)
简单修复,使用typ
参数:
pd.read_json(js, typ='series')
a 1
b 2
c 3
dtype: int64
它是“typ”而不是“type”,以免混淆type
内置!