簡體   English   中英

Pandas 和 JSON ValueError:數組的長度必須相同

[英]Pandas and JSON ValueError: arrays must all be same length

我正在嘗試制作一個簡單的應用程序,該應用程序將從歌曲中獲取歌詞並保存它們,我正在使用Lyricgenius創建一個包含我請求的歌曲歌詞的 JSON 文件,但是,我不知道如何解析來自 JSON 文件的數據。 我已經嘗試按照教程進行操作,但是當我開始使用 Pandas 時出現錯誤。

用於創建 JSON 文件的代碼

import lyricsgenius as genius
import os

os.getcwd()

geniusCreds = "qlDFcHWqCRpSfq0pVTctt1ZhDc4wHF6lpP5WGODh4iVQB7yTPn7Hw6SjWAFiCdxa"
artist_name = "Steely Dan"

api = genius.Genius(geniusCreds)
artist = api.search_artist(artist_name, max_songs=3)

artist.save_lyrics()

從 JSON 文件讀取數據的代碼

import pandas as pd
import os


Artist = pd.read_json("Lyrics_SteelyDan.json")

df = pd.DataFrame.from_dict(Artist['songs'])

df.head

每當我運行上面的代碼時,我都會收到錯誤,關於如何修復錯誤或解析數據的更好方法的任何幫助將不勝感激,謝謝。

 "c:/Users/Admin/Desktop/Steely Dan/Data.py"
Traceback (most recent call last):
  File "c:/Users/Admin/Desktop/Steely Dan/Data.py", line 5, in <module>
    Artist = pd.read_json("Lyrics_SteelyDan.json")
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\io\json\_json.py", line 592, in read_json
    result = json_reader.read()
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\io\json\_json.py", line 717, in read
    obj = self._get_object_parser(self.data)
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\io\json\_json.py", line 739, in _get_object_parser
    obj = FrameParser(json, **kwargs).parse()
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\io\json\_json.py", line 849, in parse
    self._parse_no_numpy()
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\io\json\_json.py", line 1093, in _parse_no_numpy
    loads(json, precise_float=self.precise_float), dtype=None
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\core\frame.py", line 411, in __init__
    mgr = init_dict(data, index, columns, dtype=dtype)
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\core\internals\construction.py", line 257, in init_dict
    return arrays_to_mgr(arrays, data_names, index, columns, dtype=dtype)
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\core\internals\construction.py", line 77, in arrays_to_mgr
    index = extract_index(arrays)
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\core\internals\construction.py", line 368, in extract_index
    raise ValueError("arrays must all be same length")
ValueError: arrays must all be same length

如果行長度不同,則原始代碼將失敗。

嘗試這個:

import json
from pandas.io.json import json_normalize

with open('Lyrics_SteelyDan.json') as json_data:
    data = json.load(json_data)

df = pd.DataFrame(data['songs'])
df['lyrics']

閱讀: https : //hackersandslackers.com/json-into-pandas-dataframes/

暫無
暫無

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

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