代码之家  ›  专栏  ›  技术社区  ›  bkcollection

Python:ValueError:如果使用所有标量值,则必须传递索引[duplicate]

  •  0
  • bkcollection  · 技术社区  · 7 年前

    我在导入带有pandas的JSON文件时遇到了一些困难。

    import pandas as pd
    map_index_to_word = pd.read_json('people_wiki_map_index_to_word.json')
    

    ValueError: If using all scalar values, you must pass an index
    

    文件结构简化如下:

    {"biennials": 522004, "lb915": 116290, "shatzky": 127647, "woode": 174106, "damfunk": 133206, "nualart": 153444, "hatefillot": 164111, "missionborn": 261765, "yeardescribed": 161075, "theoryhe": 521685}
    

    它来自华盛顿大学的机器学习课程。你可以找到文件 here

    0 回复  |  直到 7 年前
        1
  •  61
  •   user2285236    9 年前

    尝试

    ser = pd.read_json('people_wiki_map_index_to_word.json', typ='series')
    

    该文件只包含值为标量的键值对。您可以使用 ser.to_frame('count') .

    你也可以这样做:

    import json
    with open('people_wiki_map_index_to_word.json', 'r') as f:
        data = json.load(f)
    

    现在数据就是字典。您可以将其传递给数据帧构造函数,如下所示:

    df = pd.DataFrame({'count': data})
    
        2
  •  14
  •   Adonis H.    6 年前

    Method 1

    或者可以将对象括在[]( source )如下图所示,为您提供一种行格式,如果您正在加载多个值并计划将矩阵用于您的机器学习模型,这将非常方便。

    df = pd.DataFrame([data])
    

    Method 2

        3
  •  4
  •   Anant Gupta    8 年前

    我认为现在发生的是

    map_index_to_word = pd.read_json('people_wiki_map_index_to_word.json')
    

    {"biennials": 522004, "lb915": 116290, "shatzky": 127647, "woode": 174106, "damfunk": 133206, "nualart": 153444, "hatefillot": 164111, "missionborn": 261765, "yeardescribed": 161075, "theoryhe": 521685}
    

    实际上是

    '{"biennials": 522004, "lb915": 116290, "shatzky": 127647, "woode": 174106, "damfunk": 133206, "nualart": 153444, "hatefillot": 164111, "missionborn": 261765, "yeardescribed": 161075, "theoryhe": 521685}'
    

    由于字符串是标量,它希望您将其作为json加载,因此必须将其转换为dict,这正是另一个响应所做的

    myfile=f.read()
    jsonData=json.loads(myfile)
    df=pd.DataFrame(data)
    
        4
  •  0
  •   Sonal    4 年前

    例如 cat值.json

    {
    name: "Snow",
    age: "31"
    }
    
    df = pd.read_json('values.json')
    

    很有可能你最终会这样 错误:

    熊猫在值中查找列表或字典。像这样的 cat值.json

    {
    name: ["Snow"],
    age: ["31"]
    }
    

    df = pd.DataFrame([pd.read_json(report_file,  typ='series')])
    result = df.to_html()