Ric*_*ckD 6 python json pandas
我试图找出 Pandas.read_json 是否执行某种程度的自动检测。例如,我有以下数据:
data_records = [
{
"device": "rtr1",
"dc": "London",
"vendor": "Cisco",
},
{
"device": "rtr2",
"dc": "London",
"vendor": "Cisco",
},
{
"device": "rtr3",
"dc": "London",
"vendor": "Cisco",
},
]
data_index = {
"rtr1": {"dc": "London", "vendor": "Cisco"},
"rtr2": {"dc": "London", "vendor": "Cisco"},
"rtr3": {"dc": "London", "vendor": "Cisco"},
}
Run Code Online (Sandbox Code Playgroud)
如果我执行以下操作:
import pandas as pd
import json
pd.read_json(json.dumps(data_records))
---
device dc vendor
0 rtr1 London Cisco
1 rtr2 London Cisco
2 rtr3 London Cisco
Run Code Online (Sandbox Code Playgroud)
虽然我得到了我想要的输出,但数据是基于记录的。既然是默认的orient是列,我不认为这会起作用。
因此是否存在一定程度的自动检测?使用基于索引的输入,行为似乎更加内联。如图所示,默认情况下似乎已根据列方向解析数据。
pd.read_json(json.dumps(data_index))
rtr1 rtr2 rtr3
dc London London London
vendor Cisco Cisco Cisco
pd.read_json(json.dumps(data_index), orient="index")
dc vendor
rtr1 London Cisco
rtr2 London Cisco
rtr3 London Cisco
Run Code Online (Sandbox Code Playgroud)
当使用pd.read_json()with时orient=None,数据的表示形式是通过 自动确定的pd.DataFrame()。
pandas 文档在这里有点误导。当未指定时orient,将使用“列”的解析器,即self.obj = pd.DataFrame(json.loads(json))。所以
pd.read_json(json.dumps(data_records))
Run Code Online (Sandbox Code Playgroud)
相当于
pd.DataFrame(json.loads(json.dumps(data_records)))
Run Code Online (Sandbox Code Playgroud)
这又相当于
pd.DataFrame(data_records)
Run Code Online (Sandbox Code Playgroud)
即,将字典列表传递给 DataFrame 构造函数,然后该构造函数执行数据表示的自动确定。请注意,这并不意味着orient会自动检测到。相反,应用关于如何将数据加载到 DataFrame 的简单启发式方法(见下文)。
pd.DataFrame()对于 JSON 结构数据的 3 个最相关的情况,DataFrame 的构建方式pd.DataFrame()是:
In[1]: data = {"a": [1, 2, 3], "b": [9, 8, 7]}
...: pd.DataFrame(data)
Out[1]:
a b
0 1 9
1 2 8
2 3 7
Run Code Online (Sandbox Code Playgroud)
In[2]: data = {"a": {"x": 1, "y": 2, "z": 3}, "b": {"x": 9, "y": 8, "z": 7}}
...: pd.DataFrame(data)
Out[2]:
a b
x 1 9
y 2 8
z 3 7
Run Code Online (Sandbox Code Playgroud)
In[3]: data = [{'a': 1, 'b': 9}, {'a': 2, 'b': 8}, {'a': 3, 'b': 7}]
...: pd.DataFrame(data)
Out[3]:
a b
0 1 9
1 2 8
2 3 7
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
955 次 |
| 最近记录: |