<目次>
(1) PythonでValueError: If using all scalar values, you must pass an indexエラーが出た時の対処方法
(1-1) 事象・エラーメッセージ
(1-2) 原因
(1-3) 対策
PythonでValueError: If using all scalar values, you must pass an indexエラーが出た時の対処方法
PythonのpandasライブラリでValueError: If using all scalar values, you must pass an indexエラーが出る原因と対処についてご紹介します。
(1-1) 事象・エラーメッセージ
{ "address1": "神奈川県", "address2": "横浜市神奈川区", "address3": "羽沢南", "kana1": "カナガワケン", "kana2": "ヨコハマシカナガワク", "kana3": "ハザワミナミ", "prefcode": "14", "zipcode": "2210866" }
Traceback (most recent call last): ~中略~ raise ValueError("If using all scalar values, you must pass an index") ValueError: If using all scalar values, you must pass an index
(1-2) 原因
●Pandasが待ち受ける型の例
(1-3) 対策
import json import pandas as pd def parse_json_pandas_main(): # JSON形式のデータの保存パス path = r"C:\dev\Python\00_LocalPythonApp\Sample_JsonParse\TestData\TestData.json" df = pd.read_json(path) print (df.info) if __name__ == "__main__": parse_json_pandas_main()
import json import pandas as pd def parse_json_pandas_main(): # JSON形式のデータの保存パス path = r"C:\dev\Python\00_LocalPythonApp\Sample_JsonParse\TestData\TestData_Before.json" # JSONライブラリを用いて、JSONファイルのデータをJSONオブジェクトとしてロード with open(path,'r',encoding='utf-8', errors='ignore') as f: json_object = json.loads(f.read()) df = pd.DataFrame(json_object, index=[1]) print (df.info) if __name__ == "__main__": parse_json_pandas_main()
{ "address1": "神奈川県", "address2": "横浜市神奈川区", "address3": "羽沢南", "kana1": "カナガワケン", "kana2": "ヨコハマシカナガワク", "kana3": "ハザワミナミ", "prefcode": "14", "zipcode": "2210866" }
{ "address1": ["神奈川県"], "address2": ["横浜市神奈川区"], "address3": ["羽沢南"], "kana1": ["カナガワケン"], "kana2": ["ヨコハマシカナガワク"], "kana3": ["ハザワミナミ"], "prefcode": ["14"], "zipcode": ["2210866"] }
(補足)
A | B | |
1 | aa | bb |
このような挙動になるのは、pandas自体は’aa’や’bb’のデータが「何行分、必要なのか?」が分からないため、List形式にしたり、インデックスを指定する事で、それを明示的に指定する必要があるためです。