簡體   English   中英

ValueError:預期為 object 或將 json 讀取為 pandas dataframe 時的值

[英]ValueError: Expected object or value when reading json as pandas dataframe

樣本數據

{
   "_id": "OzE5vaa3p7",
   "categories": [
      {
         "__type": "Pointer",
         "className": "Category",
         "objectId": "nebCwWd2Fr"
      }
   ],
   "isActive": true,
   "imageUrl": "https://firebasestorage.googleapis.com/v0/b/shopgro-1376.appspot.com/o/Barcode%20Data%20Upload%28II%29%2FAnil_puttu_flour_500g.png?alt=media&token=9cf63197-0925-4360-a31a-4675f4f46ae2",
   "barcode": "8908001921015",
   "isFmcg": true,
   "itemName": "Anil puttu flour 500g",
   "mrp": 58,
   "_created_at": "2016-10-02T13:49:03.281Z",
   "_updated_at": "2017-02-22T08:48:09.548Z"
}

{
   "_id": "ENPCL8ph1p",
   "categories": [
      {
         "__type": "Pointer",
         "className": "Category",
         "objectId": "B4nZeUHmVK"
      }
   ],
   "isActive": true,
   "imageUrl": "https://firebasestorage.googleapis.com/v0/b/kirananearby-9eaa8.appspot.com/o/Barcode%20data%20upload%2FYippee_Magic_Masala_Noodles,_70_g.png?alt=media&token=d9e47bd7-f847-4d6f-9460-4be8dbcaae00",
   "barcode": "8901725181222",
   "isFmcg": true,
   "itemName": "Yippee Magic Masala Noodles, 70 G",
   "mrp": 12,
   "_created_at": "2016-10-02T13:49:03.284Z",
   "_updated_at": "2017-02-22T08:48:09.074Z"
}

我試過了:

import pandas as pd
data= pd.read_json('Data.json')

收到錯誤 ValueError: Expected object or value

import json
with open('gdb.json') as datafile:
    data = json.load(datafile)
retail = pd.DataFrame(data)

錯誤:json.decoder.JSONDecodeError:額外數據:第 2 行第 1 列(字符 509)

with open('gdb.json') as datafile:
for line in datafile:
    data = json.loads(line)
retail = pd.DataFrame(data)

錯誤:json.decoder.JSONDecodeError:額外數據:第 1 行第 577 列(字符 576)

如何將這個 json 讀成 pandas

我遇到了同樣的錯誤,閱讀函數文檔並使用不同的參數。

我通過使用下面的一個解決了它,

data= pd.read_json('Data.json', lines=True)

你可以嘗試其他的東西,比如

data= pd.read_json('Data.json', lines=True, orient='records')

data= pd.read_json('Data.json', orient=str)

您的 JSON 格式錯誤。

ValueError: Expected object or value如果您輸入錯誤的文件名,可能會出現ValueError: Expected object or value Data.json是否存在? 我注意到您在其他嘗試中使用了gdb.json

確認文件名正確后,您必須修復 JSON。 您現在擁有的是兩個由空格分隔的斷開連接的記錄。 JSON 中的列表必須是方括號內的有效數組並用逗號分隔: [{record1}, {record2}, ...]

此外,對於熊貓,您應該將數組放在名為"data"的根元素下:

{ "data": [ {record1}, {record2}, ... ] }

您的 JSON 最終應如下所示:

{"data":
    [{
        "_id": "OzE5vaa3p7",
        "categories": [
            {
                "__type": "Pointer",
                "className": "Category",
                "objectId": "nebCwWd2Fr"
            }
        ],
        "isActive": true,
        "imageUrl": "https://firebasestorage.googleapis.com/v0/b/shopgro-1376.appspot.com/o/Barcode%20Data%20Upload%28II%29%2FAnil_puttu_flour_500g.png?alt=media&token=9cf63197-0925-4360-a31a-4675f4f46ae2",
        "barcode": "8908001921015",
        "isFmcg": true,
        "itemName": "Anil puttu flour 500g",
        "mrp": 58,
        "_created_at": "2016-10-02T13:49:03.281Z",
        "_updated_at": "2017-02-22T08:48:09.548Z"
    }
    ,
    {
        "_id": "ENPCL8ph1p",
        "categories": [
            {
                "__type": "Pointer",
                "className": "Category",
                "objectId": "B4nZeUHmVK"
            }
        ],
        "isActive": true,
        "imageUrl": "https://firebasestorage.googleapis.com/v0/b/kirananearby-9eaa8.appspot.com/o/Barcode%20data%20upload%2FYippee_Magic_Masala_Noodles,_70_g.png?alt=media&token=d9e47bd7-f847-4d6f-9460-4be8dbcaae00",
        "barcode": "8901725181222",
        "isFmcg": true,
        "itemName": "Yippee Magic Masala Noodles, 70 G",
        "mrp": 12,
        "_created_at": "2016-10-02T13:49:03.284Z",
        "_updated_at": "2017-02-22T08:48:09.074Z"
    }]}

最后,pandas 將此格式稱為split orientation ,因此您必須按如下方式加載它:

df = pd.read_json('gdb.json', orient='split')

df現在包含以下數據框:

          _id                                                   categories  isActive                                                     imageUrl        barcode  isFmcg                           itemName  mrp                      _created_at                      _updated_at
0  OzE5vaa3p7  [{'__type': 'Pointer', 'className': 'Category', 'objectI...      True  https://firebasestorage.googleapis.com/v0/b/shopgro-1376...  8908001921015    True              Anil puttu flour 500g   58 2016-10-02 13:49:03.281000+00:00 2017-02-22 08:48:09.548000+00:00
1  ENPCL8ph1p  [{'__type': 'Pointer', 'className': 'Category', 'objectI...      True  https://firebasestorage.googleapis.com/v0/b/kirananearby...  8901725181222    True  Yippee Magic Masala Noodles, 70 G   12 2016-10-02 13:49:03.284000+00:00 2017-02-22 08:48:09.074000+00:00

你應該確保終端目錄與文件目錄相同(當我發生這個錯誤時,因為我使用了vscode,對我來說意味着vscode中的終端目錄與我想要的python文件不同執行)

我不認為這會是問題,因為它應該是默認值(我認為)。 但是你試過這個嗎? 添加“r”以指定文件是只讀的。

import json with open('gdb.json', 'r') as datafile: data = json.load(datafile) retail = pd.DataFrame(data)

使您的路徑變得輕松,這將有助於閱讀數據。 同時,只需將您的文件放在桌面上並提供讀取數據的路徑。 有用。

您可以嘗試將相對路徑更改為絕對路徑針對您的情況更改

import pandas as pd
data= pd.read_json('Data.json')

import pandas as pd
data= pd.read_json('C://Data.json')#the absolute path in explore

當我在控制台中從 jupyter notebook 運行相同的代碼到 pycharm 的 jupyter notebook 時,我遇到了同樣的錯誤

另一種變體,結合了線程中所有獨立失敗的提示,但這對我有用:

pd.read_json('file.json', lines=True, encoding = 'utf-8-sig')

如果您輸入絕對路徑並使用 \ 它應該可以工作。 至少我就是這樣解決問題的

我不確定我是否清楚地理解了您的問題,您只是想讀取 json 數據?

我剛剛將您的樣本數據收集到列表中,如下所示

[
  {
   "_id": "OzE5vaa3p7",
   "categories": [
      {
         "__type": "Pointer",
         "className": "Category",
         "objectId": "nebCwWd2Fr"
      }
   ],
   "isActive": true,
   "imageUrl": "https://firebasestorage.googleapis.com/v0/b/shopgro-1376.appspot.com/o/Barcode%20Data%20Upload%28II%29%2FAnil_puttu_flour_500g.png?alt=media&token=9cf63197-0925-4360-a31a-4675f4f46ae2",
   "barcode": "8908001921015",
   "isFmcg": true,
   "itemName": "Anil puttu flour 500g",
   "mrp": 58,
   "_created_at": "2016-10-02T13:49:03.281Z",
   "_updated_at": "2017-02-22T08:48:09.548Z"
},
{
   "_id": "ENPCL8ph1p",
   "categories": [
      {
         "__type": "Pointer",
         "className": "Category",
         "objectId": "B4nZeUHmVK"
      }
   ],
   "isActive": true,
   "imageUrl": "https://firebasestorage.googleapis.com/v0/b/kirananearby-9eaa8.appspot.com/o/Barcode%20data%20upload%2FYippee_Magic_Masala_Noodles,_70_g.png?alt=media&token=d9e47bd7-f847-4d6f-9460-4be8dbcaae00",
   "barcode": "8901725181222",
   "isFmcg": true,
   "itemName": "Yippee Magic Masala Noodles, 70 G",
   "mrp": 12,
   "_created_at": "2016-10-02T13:49:03.284Z",
   "_updated_at": "2017-02-22T08:48:09.074Z"
}
]

並運行此代碼

import pandas as pd
df = pd.read_json('Data.json')
print(df)

輸出:-

              _created_at ... mrp
0 2016-10-02 13:49:03.281 ...  58
1 2016-10-02 13:49:03.284 ...  12

[2 rows x 10 columns]

如果您嘗試下面的代碼,它將解決問題:

data_set = pd.read_json(r'json_file_address\file_name.json', lines=True)

我今天遇到了這個錯誤消息,就我而言,問題是文本文件的編碼是 UTF-8-BOM 而不是 UTF-8,這是 read_json() 的默認值。 這可以通過指定編碼來解決:

data= pd.read_json('Data.json', encoding = 'utf-8-sig')

我遇到了同樣的問題,這背后的原因是 json 文件有一些不遵守 json 規則的東西。 在我的情況下,我在其中一個值中使用了單引號而不是雙引號。

在此處輸入圖片說明

這對我有用: pd.read_json('./dataset/healthtemp.json', typ="series")

除了一件事,一切都很好

在 .json 文件中輸入以下代碼:

{
"a": {
    "_id": "OzE5vaa3p7",
    "categories": [
    {
        "__type": "Pointer",
        "className": "Category",
        "objectId": "nebCwWd2Fr"
    }
    ],
    "isActive": true,
    "imageUrl": "https://firebasestorage.googleapis.com/v0/b/shopgro-1376.appspot.com/o/Barcode%20Data%20Upload%28II%29%2FAnil_puttu_flour_500g.png?alt=media&token=9cf63197-0925-4360-a31a-4675f4f46ae2",
    "barcode": "8908001921015",
    "isFmcg": true,
    "itemName": "Anil puttu flour 500g",
    "mrp": 58,
    "_created_at": "2016-10-02T13:49:03.281Z",
    "_updated_at": "2017-02-22T08:48:09.548Z"
},
"b": {
    "_id": "ENPCL8ph1p",
    "categories": [
    {
        "__type": "Pointer",
        "className": "Category",
        "objectId": "B4nZeUHmVK"
    }
    ],
    "isActive": true,
    "imageUrl": "https://firebasestorage.googleapis.com/v0/b/kirananearby-9eaa8.appspot.com/o/Barcode%20data%20upload%2FYippee_Magic_Masala_Noodles,_70_g.png?alt=media&token=d9e47bd7-f847-4d6f-9460-4be8dbcaae00",
    "barcode": "8901725181222",
    "isFmcg": true,
    "itemName": "Yippee Magic Masala Noodles, 70 G",
    "mrp": 12,
    "_created_at": "2016-10-02T13:49:03.284Z",
    "_updated_at": "2017-02-22T08:48:09.074Z"
}
}

謝謝

ValueError: All arrays must be of the same length

df = pd.read_json (r'./filename.json')#,lines=True)

可以通過將上面的行更改為以下行來解決。

df = pd.read_json (r'./filename.json',lines=True)

我只是通過在絕對路徑的開頭添加一個“/”來解決這個問題。

import pandas as pd    
pd_from_json = pd.read_json("/home/miguel/folder/information.json")

似乎有一百萬種事情會導致這種情況。 在我的例子中,我的 json 文件開始有一個字節順序標記,在 vim-airline 中用[BOM] [unix]表示。 我不知道字節順序標記是什么或何時需要它。 為了刪除它,在 vim 中,我運行了:set nobomb然后保存了文件。 然后,pandas 可以讀取它,我對 go 很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM