我正在尝试从json字符串(而不是文件)创建DataFrame
对象:
json_string = "[{'code': '8', 'name': 'Human'}, {'code': '11', 'name': 'Orc'}]"
df = pd.read_json(json_string)
但是这种方法会导致以下错误:
ValueError: Expected object or value
documentation让听起来像是可能的:
pandas。 read_json ( path_or_buf = None,orient = None,typ ='frame',dtype = True,convert_axes = True,convert_dates = True,keep_default_dates = True,numpy = False ,precise_float = False,date_unit = None,encoding = None,lines = False,chunksize = None,compression ='推断')
将JSON字符串转换为pandas对象
- path_or_buf :有效的JSON字符串或类文件,默认值:无 字符串可以是URL。有效的URL方案包括http,ftp,s3和file。对于文件URL,需要主机。例如,本地文件可以是file://localhost/path/to/table.json
我已经尝试使用orient
的几个组合调用该方法,但没有成功。有关如何完成此任务的任何提示?
我真的不希望将我的字符串保存到文件以便能够成功使用read_json()
。
答案 0 :(得分:5)
您可以使用eval
来评估要字典的字符串,然后直接传递给DataFrame
构造函数。
>>> import pandas as pd
>>> pd.DataFrame(eval("[{'code': '8', 'name': 'Human'}, {'code': '11', 'name': 'Orc'}]"))
code name
0 8 Human
1 11 Orc
同样,您也可以使用ast.literal_eval
代替eval
>>> import ast
>>> pd.DataFrame(ast.literal_eval("[{'code': '8', 'name': 'Human'}, {'code': '11', 'name': 'Orc'}]"))
code name
0 8 Human
1 11 Orc