我有如下数据帧。我想添加两列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进行索引以获得团队名称。在平局的地方使用where
到NaN
匹配,然后使用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