python - Python中将列表元素嵌套到数据框
问题描述
公平警告这个问题确实需要一个非标准的 Python 包,nba_api
. 我有一个包含 3 个元素的列表,列表中的每个元素都包含另一个包含 2 个元素的列表:一个player
数据框和一个team
数据框。实现以下预期结果的推荐方法是:1 个组合player
数据框和 1 个组合team
数据框?来自 R 背景,我将通过以下方式解决这个问题:1. 将players
数据框与team
数据框连接到joined_list
then,2. 使用do.call(rbind, joined_list)
将结果行绑定到一个数据框。我知道这对于许多有经验的 Python 用户来说可能是非常基础的,但是在经过多次搜索之后,我很难找到正确的方法来解决这个问题。
import nba_api
import requests
import pandas as pd
from nba_api.stats.endpoints import boxscoreadvancedv2
# vector of game ids (test purposes)
gameids = ['0021900001','0021900002','0021900012']
headers1 = {
'Host': 'stats.nba.com',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0',
'Accept': 'application/json, text/plain, */*',
'Accept-Language': 'en-US,en;q=0.5',
'Referer': 'https://stats.nba.com/',
'Accept-Encoding': 'gzip, deflate, br',
'Connection': 'keep-alive',
}
# store player and team results for each gameids as elements of list temp
temp = list()
for i in range(len(gameids)):
temp.append(boxscoreadvancedv2.BoxScoreAdvancedV2(game_id = gameids[i], headers=headers1))
# manually access elements of list and output to data frame
## there has to be an easier way to access list elements and rowbind the results!!!
df_out0 = temp[0].get_data_frames()
df_player0 = df_out0[0]
df_team0 = df_out0[1]
df_out1 = temp[1].get_data_frames()
df_player1 = df_out1[0]
df_team1 = df_out1[1]
解决方案
经过更多的阅读(和清晰),我能够将我的代码的手动部分组合到 for 循环中,生成一个包含球员数据的列表和一个包含团队数据的列表。然后,使用这篇文章:Concatenate a list of pandas dataframes together我能够将player
和team
列表组合成各自的数据帧。
## output player frames
i=0
df_out=[]
df_players=[]
for i in range(len(temp)):
df_out = temp[i].get_data_frames()
df_players.append(df_out[0]) # index 0 will always contain player frame
df_players = pd.concat(df_players)
print(df_players)
## output team frames
i=0
df_out=[]
df_team=[]
for i in range(len(temp)):
df_out = temp[i].get_data_frames()
df_team.append(df_out[1]) # index 1 will always contain team frame
df_team = pd.concat(df_team)
print(df_team)
推荐阅读
- python - Django 在创建/编辑新实例时运行函数,并让函数更改创建/编辑的实例中的变量
- excel - VBA:我怎样才能连接这个
- r - 如何匹配列的两个字符串并过滤匹配的列值
- javascript - 如何使用 Highcharts-Regression 获得方程值结果?
- c++ - 给定两个偶数,求它们之间所有偶数的平方和
- arduino - 如何不返回中断前程序停止的地方
- ruby-on-rails - 将rails应用程序部署到heroku时如何解决错误
- mysql - 使用 MySQL 中的临时表规范化数据
- python - 尝试在 IntelliJ 中构建 Jenkins 性能插件时出错
- unity3d - 如何在循环平滑的原始图像上播放视频文件?