【问题标题】:Identify the headings in a JSON with pandas使用 pandas 识别 JSON 中的标题
【发布时间】:2019-07-15 22:01:13
【问题描述】:

我有这个 JSON 文件

*[
  {
    "name": "Kitty",
    "species" : "cat",
    "foods": {
      "likes": ["fresh food"],
      "dislikes": ["stale food"]
    }
  },
  {
    "name": "Pupster",
    "species" : "dog",
    "foods": {
      "likes": ["tomatoes", "peas"],
      "dislikes": ["bread"]
    }
  },
  {
    "name": "Tux",
    "species" : "cat",
    "foods": {
      "likes": ["fancy dishes"],
      "dislikes": ["basic cat food"]
    }
  }
]*

我是这样读这个文件的:

    content = requests.get("https://raw.githubusercontent.com/LearnWebCode/json-example/master/animals-3.json") 
data = json.loads(content.content)
df = pd.DataFrame(data)

但我想要的是只读取 JSON 文件头并将它们存储在一个列表中。我有这段代码可以执行类似的功能

 getcolumns = list(df.columns.values)

但我只得到以下内容

  • 姓名
  • 物种
  • 食物

而我想要达到的目标如下:

  • 姓名
  • 物种
  • 食物
  • 喜欢
  • 不喜欢

我是 Pandas 的新手,任何建议都可以接受

【问题讨论】:

  • 'likes' 和 'dislikes' 在 'foods' 类别下,如果您进一步拆分这 2 个,那么 'foods' 列中将没有任何内容。该表将包含“名称”、“物种”、“喜欢”和“不喜欢”

标签: json python-3.x pandas


【解决方案1】:

列表理解应该起作用:

j = [
  {
    "name": "Kitty",
    "species" : "cat",
    "foods": {
      "likes": ["fresh food"],
      "dislikes": ["stale food"]
    }
  },
  {
    "name": "Pupster",
    "species" : "dog",
    "foods": {
      "likes": ["tomatoes", "peas"],
      "dislikes": ["bread"]
    }
  },
  {
    "name": "Tux",
    "species" : "cat",
    "foods": {
      "likes": ["fancy dishes"],
      "dislikes": ["basic cat food"]
    }
  }
]

getcolumns = [x for x in j[0]] + [x for x in j[0]['foods']]
# ['name', 'species', 'foods', 'likes', 'dislikes']

或者如果你想要一个数据框:

from pandas.io.json import json_normalize
df = json_normalize(j)

     foods.dislikes       foods.likes     name species
0      [stale food]      [fresh food]    Kitty     cat
1           [bread]  [tomatoes, peas]  Pupster     dog
2  [basic cat food]    [fancy dishes]      Tux     cat

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-15
    • 1970-01-01
    • 2015-05-14
    • 2016-04-20
    • 2021-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多