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

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-20 00:29:54  来源:igfitidea点击:

Python - How to convert JSON File to Dataframe

pythonjsonpandasdataframe

提问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 个输入,您也可以在它们之间进行转换。

  1. input: listOfDictionaries --> use @Vikash Singh Solution
  1. 输入:listOfDictionaries --> 使用@Vikash Singh 解决方案

example: [{"":{"...

例子: [{"":{"...

The pd.DataFrame() needs a listOfDictionaries as input.

pd.DataFrame() 需要一个 listOfDictionaries 作为输入。

  1. input: jsonStr --> use @Justin Malinchak solution
  1. 输入: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)