如何将JSON文件转换为数据帧以进行某些转换。
例如,如果JSON文件显示为:
{"FirstName":"John",
"LastName":"Mark",
"MiddleName":"Lewis",
"username":"johnlewis2",
"password":"2910"}
如何将其转换为类似
的表格Column -> FirstName | LastName | MiddleName | username | password
Row -----> John | Mark |Lewis | johnlewis2 |2910
答案 0 :(得分:32)
从字典对象创建数据框。
import pandas as pd
data = [{'name': 'vikash', 'age': 27}, {'name': 'Satyam', 'age': 14}]
df = pd.DataFrame.from_dict(data, orient='columns')
df
Out[4]:
age name
0 27 vikash
1 14 Satyam
如果您有嵌套列,那么首先需要规范化数据:
from pandas.io.json import json_normalize
data = [
{
'name': {
'first': 'vikash',
'last': 'singh'
},
'age': 27
},
{
'name': {
'first': 'satyam',
'last': 'singh'
},
'age': 14
}
]
df = pd.DataFrame.from_dict(json_normalize(data), orient='columns')
df
Out[8]:
age name.first name.last
0 27 vikash singh
1 14 satyam singh
来源:https://github.com/vi3k6i5/pandas_basics/blob/master/1_a_create_a_dataframe_from_dictonary.ipynb
答案 1 :(得分:5)
from pandas.io.json import json_normalize
print json_normalize(your_json)
这会将半结构化JSON数据规范化为平面表
<强>输出强>
FirstName LastName MiddleName password username
John Mark Lewis 2910 johnlewis2
答案 2 :(得分:3)
jsondata = '{"0001":{"FirstName":"John","LastName":"Mark","MiddleName":"Lewis","username":"johnlewis2","password":"2910"}}'
import json
import pandas as pd
jdata = json.loads(jsondata)
df = pd.DataFrame(jdata)
print df.T
这应该是这样的:。
FirstName LastName MiddleName password username 0001 John Mark Lewis 2910 johnlewis2
答案 3 :(得分:1)
您可能有2个输入,也可以在它们之间进行转换。
示例:[{"":{"...
pd.DataFrame()需要listOfDictionaries作为输入。
示例:'{"":{"...
如果您具有jsonStr,则需要首先执行额外的步骤以将listOfDictionaries设置为List。这很明显,因为它的生成方式如下:
jsonStr = json.dumps(listOfDictionaries)
因此,首先从jsonStr切换回listOfDictionaries:
listOfDictionaries = json.loads(jsonStr)