类型错误:列表索引必须是整数或切片,而不是字符串。使用记录路径

问题描述 投票:0回答:1

我最近遇到了一个问题,似乎无法解决。在我的项目中,我需要将 pandas 数据帧的索引设置为 Json 文件中找到的变量。我正在使用的 JSON 文件如下所示:

{
"data": {
    "events": [
        {
            "id": "3745060",
            "externalIds": [
                {
                    "id": "10244973",
                    "provider": "betgenius"
                },
                {
                    "id": "sr:match:41888589",
                    "provider": "betradar"
                }
            ],
            "extKey": null,
            "retailCode": null,
            "name": "Norwich City FC v Ipswich Town",

从这个文件中我需要提取变量“name”。为了尝试使用它,我使用了以下代码行:

api = 'https://content.toto.nl/content-service/api/v1/q/event-list?startTimeFrom=2024-04-05T22%3A00%3A00Z&started=false&maxMarkets=10&orderMarketsBy=displayOrder&marketSortsIncluded=--%2CCS%2CDC%2CDN%2CHH%2CHL%2CMH%2CMR%2CWH&marketGroupTypesIncluded=CUSTOM_GROUP%2CDOUBLE_CHANCE%2CDRAW_NO_BET%2CMATCH_RESULT%2CMATCH_WINNER%2CMONEYLINE%2CROLLING_SPREAD%2CROLLING_TOTAL%2CSTATIC_SPREAD%2CSTATIC_TOTAL&eventSortsIncluded=MTCH&includeChildMarkets=true&prioritisePrimaryMarkets=true&includeCommentary=true&includeMedia=true&drilldownTagIds=691&excludeDrilldownTagIds=7291%2C7294%2C7300%2C7303%2C7306'
re = r.get(api)
red = re.json()

df = pd.json_normalize(red, record_path=['data', 'events'], meta=[['data', 'events', 'markets', 'outcomes', 'type'], ['data', 'events', 'markets', 'outcomes', 'subType'], ['data', 'events', 'name']])
#meta_col = 'data.events.markets.outcomes.type'
#meta_thuis = 'data.events.markets.outcomes.subType'
game = df['name']
print(game)

我对不同的 JSON 文件和不同的变量使用了类似的代码,但从未遇到过这个问题。不知道解决这个问题的下一步是什么,所以肯定需要一些帮助<3

python json pandas dataframe nested
1个回答
0
投票

这是您要找的吗?

import pandas as pd
import requests

api = 'https://content.toto.nl/content-service/api/v1/q/event-list?startTimeFrom=2024-04-05T22%3A00%3A00Z&started=false&maxMarkets=10&orderMarketsBy=displayOrder&marketSortsIncluded=--%2CCS%2CDC%2CDN%2CHH%2CHL%2CMH%2CMR%2CWH&marketGroupTypesIncluded=CUSTOM_GROUP%2CDOUBLE_CHANCE%2CDRAW_NO_BET%2CMATCH_RESULT%2CMATCH_WINNER%2CMONEYLINE%2CROLLING_SPREAD%2CROLLING_TOTAL%2CSTATIC_SPREAD%2CSTATIC_TOTAL&eventSortsIncluded=MTCH&includeChildMarkets=true&prioritisePrimaryMarkets=true&includeCommentary=true&includeMedia=true&drilldownTagIds=691&excludeDrilldownTagIds=7291%2C7294%2C7300%2C7303%2C7306'

res = requests.get(api).json()

df = pd.DataFrame({'name': map(lambda x: x['name'], res['data']['events'])})
display(df)

结果:

    name
0   Norwich City FC v Ipswich Town
1   Blackburn Rovers v Southampton FC
2   Cardiff City v Hull City
3   Coventry City v Leeds United
4   Huddersfield Town v Millwall
5   Leicester City v Birmingham City
6   Middlesbrough v Swansea City
7   Queens Park Rangers v Sheffield Wednesday
8   Stoke City v West Bromwich Albion
9   Sunderland AFC v Bristol City
10  Watford v Preston North End
© www.soinside.com 2019 - 2024. All rights reserved.