Python - 如何将 JSON 文件转换为数据帧
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/41168558/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Python - How to convert JSON File to Dataframe
提问by Techno04335
How can I convert a JSON File as such into a dataframe to do some transformations.
如何将这样的 JSON 文件转换为数据帧以进行一些转换。
For Example if the JSON file reads:
例如,如果 JSON 文件读取:
{"FirstName":"John",
"LastName":"Mark",
"MiddleName":"Lewis",
"username":"johnlewis2",
"password":"2910"}
How can I convert it to a table like such
我怎样才能把它转换成这样的表格
Column -> FirstName | LastName | MiddleName | username | password
Row -----> John | Mark |Lewis | johnlewis2 |2910
回答by Vikash Singh
Creating dataframe from dictionary object.
从字典对象创建数据框。
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
If you have nested columns then you first need to normalize the data:
如果您有嵌套列,那么您首先需要规范化数据:
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
Source: https://github.com/vi3k6i5/pandas_basics/blob/master/1_a_create_a_dataframe_from_dictonary.ipynb
来源:https: //github.com/vi3k6i5/pandas_basics/blob/master/1_a_create_a_dataframe_from_dictonary.ipynb
回答by Marlon Abeykoon
from pandas.io.json import json_normalize
print json_normalize(your_json)
This will Normalize semi-structured JSON data into a flat table
这会将半结构化 JSON 数据规范化为平面表
Output
输出
FirstName LastName MiddleName password username
John Mark Lewis 2910 johnlewis2
回答by Justin Malinchak
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
This should look like this:.
这应该是这样的:。
FirstName LastName MiddleName password username 0001 John Mark Lewis 2910 johnlewis2
回答by Lorenz
There are 2 inputs you might have and you can also convert between them.
您可能有 2 个输入,您也可以在它们之间进行转换。
- input: listOfDictionaries --> use @Vikash Singh Solution
- 输入:listOfDictionaries --> 使用@Vikash Singh 解决方案
example: [{"":{"...
例子: [{"":{"...
The pd.DataFrame() needs a listOfDictionaries as input.
pd.DataFrame() 需要一个 listOfDictionaries 作为输入。
- input: jsonStr --> use @Justin Malinchak solution
- 输入:jsonStr --> 使用@Justin Malinchak 解决方案
example: '{"":{"...
例子: '{"":{"...
If you have jsonStr, you need an extra step to listOfDictionaries first. This is obvious as it is generated like:
如果您有 jsonStr,则首先需要一个额外的步骤来 listOfDictionaries。这是显而易见的,因为它是这样生成的:
jsonStr = json.dumps(listOfDictionaries)
Thus, switch back from jsonStr to listOfDictionaries first:
因此,首先从 jsonStr 切换回 listOfDictionaries:
listOfDictionaries = json.loads(jsonStr)