我有一个数据集,它的形状是这样的,其中每一行表示由gameID
指定的特定匹配中的。在
gameID Won/Lost Home Away metric2 metric3 metric4 team1 team2 team3 team4
2017020001 1 1 0 10 10 10 1 0 0 0
2017020001 0 0 1 10 10 10 0 1 0 0
我要做的是创建一个函数,它接受具有相同gameID
的行并将它们联接起来。正如您在下面的数据示例中看到的,这两行代表一场比赛,它被分成主队(第1排)和客队(第2排)。我要这两排只能坐在一排。在
我怎么得到这个结果?在
编辑:我造成了太多的混乱,张贴我的代码,以便你能更好地掌握我想解决的问题。在
import numpy as np
import pandas as pd
import requests
import json
from sklearn import preprocessing
from sklearn.preprocessing import OneHotEncoder
results = []
for game_id in range(2017020001, 2017020010, 1):
url = 'https://statsapi.web.nhl.com/api/v1/game/{}/boxscore'.format(game_id)
r = requests.get(url)
game_data = r.json()
for homeaway in ['home','away']:
game_dict = game_data.get('teams').get(homeaway).get('teamStats').get('teamSkaterStats')
game_dict['team'] = game_data.get('teams').get(homeaway).get('team').get('name')
game_dict['homeaway'] = homeaway
game_dict['game_id'] = game_id
results.append(game_dict)
df = pd.DataFrame(results)
df['Won/Lost'] = df.groupby('game_id')['goals'].apply(lambda g: (g == g.max()).map({True: 1, False: 0}))
df["faceOffWinPercentage"] = df["faceOffWinPercentage"].astype('float')
df["powerPlayPercentage"] = df["powerPlayPercentage"].astype('float')
df["team"] = df["team"].astype('category')
df = pd.get_dummies(df, columns=['homeaway'])
df = pd.get_dummies(df, columns=['team'])
我想,你是在做面包和黄油: 纽比,熊猫公司?在
如果是这样,我进一步假设,您的表当前存储在熊猫.DataFrame-名为“df”的实例:
将df分成两个df,然后将它们连接起来:
当然,您可以对其进行编辑以更好地符合您的目的。例如,基于主/客场列创建df,等等
BR公司 本 :]
这是基于这样一个假设:每个
gameID
正好有两行,并且希望按该ID分组(它还假设我理解这个问题)改进的解决方案
给定一个数据帧
df
,例如您可以使用
^{pr2}$pd.merge
(和一些数据咀嚼)如下:(我保留了
Won/Lost
的前缀,因为它表示这是主队的统计数据。另外,如果有人知道如何更优雅地添加前缀而不必重新命名gameID
,请留言。)原始尝试
分组后可以应用以下函数
。。。像这样:
相关问题 更多 >
编程相关推荐