【发布时间】:2021-09-17 02:08:51
【问题描述】:
我没想到会这么复杂,但我想从一个数据帧中单元格的值与另一个数据帧中单元格的另一个值进行基本数学运算。
这些是我正在使用的数据框
url = 'https://www.basketball-reference.com/leagues/NBA_2021.html'
page = requests.get(url)
soup = BeautifulSoup(page.content, 'html.parser')
table = soup.find('table', id='per_game-team')
teamdf = pd.read_html(str(table))[0]
teamdf
和
url = 'https://www.basketball-reference.com/leagues/NBA_2021.html'
page = requests.get(url)
soup = BeautifulSoup(page.content, 'html.parser')
table = soup.find('table', id='advanced-team')
advdf = pd.read_html(str(table))[0]
advdf.columns = advdf.columns.map('_'.join)
advdf.rename_axis('Rk').reset_index()
advdf.drop(columns=['Unnamed: 17_level_0_Unnamed: 17_level_1', 'Unnamed: 22_level_0_Unnamed: 22_level_1', 'Unnamed: 27_level_0_Unnamed: 27_level_1', 'Unnamed: 28_level_0_Arena', 'Unnamed: 29_level_0_Attend.', 'Unnamed: 30_level_0_Attend./G'], inplace=True)
advdf.rename(
columns={
'Unnamed: 0_level_0_Rk': 'Rk',
'Unnamed: 1_level_0_Team': 'Team',
'Unnamed: 2_level_0_Age': 'Age',
'Unnamed: 3_level_0_W': 'W',
'Unnamed: 4_level_0_L': 'L',
'Unnamed: 5_level_0_PW': 'PW',
'Unnamed: 6_level_0_PL': 'PL',
'Unnamed: 7_level_0_MOV': 'MOV',
'Unnamed: 8_level_0_SOS': 'SOS',
'Unnamed: 9_level_0_SRS': 'SRS',
'Unnamed: 10_level_0_ORtg': 'ORtg',
'Unnamed: 11_level_0_DRtg': 'DRtg',
'Unnamed: 12_level_0_NRtg': 'NRtg',
'Unnamed: 13_level_0_Pace': 'Pace',
'Unnamed: 14_level_0_FTr': 'FTr',
'Unnamed: 15_level_0_3PAr': '3PAr',
'Unnamed: 16_level_0_TS%': 'TS%',
'Offense Four Factors_eFG%': 'O_eFG%',
'Offense Four Factors_TOV%': 'O_TOV%',
'Offense Four Factors_ORB%': 'O_ORB%',
'Offense Four Factors_FT/FGA': 'O_FT/FGA',
'Defense Four Factors_eFG%': 'D_eFG%',
'Defense Four Factors_TOV%': 'D_TOV%',
'Defense Four Factors_DRB%': 'D_DRB%',
'Defense Four Factors_FT/FGA': 'D_FT/FGA'
}, inplace=True)
advdf
所以我按团队过滤,然后从那里选择值
team1df = teamdf[teamdf.Team == 'Philadelphia 76ers*']
team1adf = advdf[advdf.Team == 'Philadelphia 76ers*']
如果我想乘以任何值,例如他们的投篮命中率和进攻得分,我会这样做
t1_fgp = team1df['FG%']
t1a_ortg = team1adf['ORtg']
t1_fgp*t1a_ortg
但不是给我我想要的值,输出看起来像
Output:
4 NaN
13 NaN
dtype: float64
请帮助这令人沮丧。
【问题讨论】: