【问题标题】:ValueError: arrays must all be same length, json linkValueError: arrays must be all the same length, json link
【发布时间】:2019-10-29 06:39:36
【问题描述】:
import pandas as pd

url = 'https://site.web.api.espn.com/apis/common/v3/sports/basketball/nba/statistics/byathlete?region=us&lang=en&contentorigin=espn&isqualified=true&page=2&limit=50&sort=offensive.avgPoints%3Adesc'
df = pd.read_json(url)

我一直在尝试将此链接导出为 JSON,但出现此错误:

 ValueError: arrays must all be same length

点击this link后可以看到数据集。

【问题讨论】:

标签: python json pandas


【解决方案1】:

主要问题是,JSON 并没有完全填充每个项目,因此每个项目可以有不同的长度。

您可以通过仅提取您感兴趣的那些特征来解决问题。例如:

# imports
import pandas as pd
import requests

# constants
URL = 'https://site.web.api.espn.com/apis/common/v3/sports/basketball/nba/statistics/byathlete?region=us&lang=en&contentorigin=espn&isqualified=true&page=2&limit=50&sort=offensive.avgPoints%3Adesc'

# save data to JSON
r = requests.get(URL)
data = r.json()

# extract only some features
df = pd.DataFrame(
    [
        {
            'id': item['athlete']['id'],
            'uid': item['athlete']['uid'],
            'firstName': item['athlete']['firstName'],
            'lastName': item['athlete']['lastName'],
        } 
        for item in data['athletes']
    ]
)

# print result
print(df.head())
        id                  uid firstName lastName
0  3133601  s:40~l:46~a:3133601  Devonte'   Graham
1  3112335  s:40~l:46~a:3112335    Nikola    Jokic
2  3133628  s:40~l:46~a:3133628     Myles   Turner
3  3917376  s:40~l:46~a:3917376    Jaylen    Brown
4  4277811  s:40~l:46~a:4277811    Collin   Sexton

【讨论】:

    猜你喜欢
    • 2021-04-07
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2018-07-28
    • 2020-01-20
    • 1970-01-01
    相关资源
    最近更新 更多