[英]Pandas to open JSON File as DataFrame : ValueError: Expected object or value
[英]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')
這對我有用: 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.