如何在panda中基于单列值动态更新两列



我有如下数据帧。我想添加两列winning_team和losing_team。如何根据主客场得分情况填充这些列?我想一次更新winning_team和losing_team列。

date home_team away_team  home_score  away_score tournament
0  1872-11-30  Scotland   England           0           0   Friendly
1  1873-03-08   England  Scotland           4           2   Friendly
2  1874-03-07  Scotland   England           2           1   Friendly
3  1875-03-06   England  Scotland           2           2   Friendly
4  1876-03-04  Scotland   England           3           0   Friendly
5  1876-03-25  Scotland     Wales           4           0   Friendly
6  1877-03-03   England  Scotland           1           3   Friendly
7  1877-03-05     Wales  Scotland           0           2   Friendly

我会使用numpy。我们将使用argsort来获得可以用作";花式;对CCD_ 2进行索引以获得团队名称。在平局的地方使用whereNaN匹配,然后使用concat将结果返回到DataFrame。

import pandas as pd
import numpy as np
idx = np.argsort(df[['home_score', 'away_score']].to_numpy(), axis=1)
arr = df[['home_team', 'away_team']].to_numpy()
df1 = (pd.DataFrame(np.take_along_axis(arr, idx, axis=1),
columns=['loser', 'winner'],
index=df.index)
.where(df.home_score != df.away_score))
df = pd.concat([df, df1], axis=1)

date home_team away_team  home_score  away_score tournament     loser    winner
0  1872-11-30  Scotland   England           0           0   Friendly       NaN       NaN
1  1873-03-08   England  Scotland           4           2   Friendly  Scotland   England
2  1874-03-07  Scotland   England           2           1   Friendly   England  Scotland
3  1875-03-06   England  Scotland           2           2   Friendly       NaN       NaN
4  1876-03-04  Scotland   England           3           0   Friendly   England  Scotland
5  1876-03-25  Scotland     Wales           4           0   Friendly     Wales  Scotland
6  1877-03-03   England  Scotland           1           3   Friendly   England  Scotland
7  1877-03-05     Wales  Scotland           0           2   Friendly     Wales  Scotland

最新更新