我在Pandas DataFrame中有以下所有列,除了Opp_DRPM
Date Name Team Opp DRPM Pos Opp_DRPM
11/22 Stephen Curry gsw okc 1.0 1 2.2
11/22 Russell Westbrook okc gsw 2.2 1 1.0
我想做的是:对于每个日期和每个玩家,根据对手和他们所处的相同位置,将DRPM的金额放在一个新的列"Opp_DRPM"中。
例如,斯蒂芬·库里是一名控球后卫(1号位),效力于GSW。GSW正在与OKC比赛,并与拉塞尔·威斯布鲁克(Russell Westbrook)搭档,后者也是一名控球后卫(1号位)。我想让拉塞尔·威斯布鲁克的DRPM进入斯蒂芬·库里的行列,反之亦然。
按Opp和Team排序分组,然后转换顺序。
df['Opp_DRPM']=df.groupby(list(map(''.join,(np.sort(df[['Opp','Team']].values,1))))).DRPM.transform(lambda x : x.iloc[::-1])
df
Out[60]:
Date Name Team Opp DRPM Pos Opp_DRPM
0 11/22 StephenCurry gsw okc 1.0 1 2.2
1 11/22 RussellWestbrook okc gsw 2.2 1 1.0