pandas用read_json读取json文件
pandas.read_json语法如下
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='infer')
其中,orient是用来指定传入的json字符串类型。
orient的设置值
1.split,用来读取有索引,由列字段和数据构成的json格式:
{index: [index], columns: [columns], data: [values]}
index作为索引, columns作为列名结合data的values组成一个dataframe
s = "{'index': [1, 2, 3], 'columns: ['a', 'b'], 'data':[[1, 3], [2, 8], [3, 9]]}"
pd.read_json(s, orient='split')
2.records,用来读取成员为字典的列表:
[{column1: value1, column2: value2}, …, {column1: value1, column2: value2}]
键column为列名,value为列所对应的值,每一个字典成员就构成了dataframe的一行数据
s = "[{'a': 1, 'b': 3}, {'a': 2, 'b': 6}, {'a': 3, 'b': 9}]"
pd.read_json(s, orient='records')
3.index,用来读取以索引为key,以列字段构成的字典为键值的json格式:
将key作为dataframe的index,字典中的键和键值构成dataframe的data
{index1: {column1: value1, column2: value2}, index2: {column1: value1, column2: value2}}
s = "{'0': {'a': 1, 'b': 2}, '1': {'a': 9, 'b': 11}}"
pd.read_json(s, orient='index')
4.columns,处理以列为键,对应一个值字典的对象:
{column1:{index1: value1, index2: value1}, column2:{index1: value2, index2: value2}}
将column作为列名,index作为索引,value为列的数据,组成一个dataframe
s = "{'a': {'0': 1, '1': 9}, 'b': {'0': 2, '1': 11}}"
pd.read_json(s, orient='columns'
5.values,处理一个嵌套的列表,里面的成员也是列表:
[[value1, value2], …, [value1, value2]]
s = "[['a', 1], ['b', 2]]"
pd.read_json(s, orient='values')