<目次>
(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形式にしたり、インデックスを指定する事で、それを明示的に指定する必要があるためです。