我的資料樣本:
[
{
"id": "0001",
"sport_key": "americanfootball_nfl",
"sport_title": "NFL",
"commence_time": "2022-10-28T00:15:00Z",
"home_team": "Tampa Bay Buccaneers",
"away_team": "Baltimore Ravens",
"bookmakers": [
{
"key": "betonlineag",
"title": "BetOnline.ag",
"last_update": "2022-10-26T00:34:17Z",
"markets": [
{
"key": "h2h",
"outcomes": [
{
"name": "Baltimore Ravens",
"price": 1.8
},
{
"name": "Tampa Bay Buccaneers",
"price": 2.04
}
]
}
]
},
{
"key": "fanduel",
"title": "FanDuel",
"last_update": "2022-10-26T00:34:30Z",
"markets": [
{
"key": "h2h",
"outcomes": [
{
"name": "Baltimore Ravens",
"price": 1.85
},
{
"name": "Tampa Bay Buccaneers",
"price": 2.0
}
]
}
]
}
]
},
{
"id": "0002",
"sport_key": "americanfootball_nfl",
"sport_title": "NFL",
"commence_time": "2022-10-30T13:30:00Z",
"home_team": "Jacksonville Jaguars",
"away_team": "Denver Broncos",
"bookmakers": [
{
"key": "betonlineag",
"title": "BetOnline.ag",
"last_update": "2022-10-26T00:34:17Z",
"markets": [
{
"key": "h2h",
"outcomes": [
{
"name": "Denver Broncos",
"price": 2.2
},
{
"name": "Jacksonville Jaguars",
"price": 1.71
}
]
}
]
},
{
"key": "betrivers",
"title": "BetRivers",
"last_update": "2022-10-26T00:34:31Z",
"markets": [
{
"key": "h2h",
"outcomes": [
{
"name": "Denver Broncos",
"price": 2.26
},
{
"name": "Jacksonville Jaguars",
"price": 1.7
}
]
}
]
}
]
}
]
我希望我的資料看起來像這樣:
| ID | 運動標題 | 主隊 | 客隊 | 博彩公司名稱 | 市場型別 | home_team_odds | away_team_odds |
|---|---|---|---|---|---|---|---|
| 0001 | 美國國家橄欖球聯盟 | 坦帕灣海盜隊 | 巴爾的摩烏鴉隊 | 貝隆林格 | h2h | 2.04 | 1.8 |
| 0001 | 美國國家橄欖球聯盟 | 坦帕灣海盜隊 | 巴爾的摩烏鴉隊 | 范杜爾 | h2h | 2.0 | 1.85 |
| 0002 | 美國國家橄欖球聯盟 | 杰克遜維爾美洲虎 | 丹佛野馬隊 | betonlineag | h2h | 1.71 | 2.2 |
| 0002 | 美國國家橄欖球聯盟 | 杰克遜維爾美洲虎 | 丹佛野馬隊 | 戀人 | h2h | 1.7 | 2.26 |
讓我絆倒的是我不知道如何有效地解壓字典串列并將我想要的資料保持在一行中。
uj5u.com熱心網友回復:
讓我們使用pd.json_normalize
df = pd.json_normalize(data, record_path =['bookmakers', 'markets'],
meta=['id', 'sport_title', 'home_team', 'away_team', ['bookmakers', 'key']])
df = (df.assign(home_team_odds=df['outcomes'].str[1].str['price'],
away_team_odds=df['outcomes'].str[0].str['price'])
.rename(columns={'bookmakers.key': 'bookmaker_name', 'key': 'market_type'})
.drop(columns='outcomes'))
print(df)
market_type id sport_title home_team away_team bookmaker_name home_team_odds away_team_odds
0 h2h 0001 NFL Tampa Bay Buccaneers Baltimore Ravens betonlineag 2.04 1.80
1 h2h 0001 NFL Tampa Bay Buccaneers Baltimore Ravens fanduel 2.00 1.85
2 h2h 0002 NFL Jacksonville Jaguars Denver Broncos betonlineag 1.71 2.20
3 h2h 0002 NFL Jacksonville Jaguars Denver Broncos betrivers 1.70 2.26
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/519423.html
上一篇:如何從JSON檔案中洗掉{}
