如何通过条件判断为DataFrame添加落败球队新列
解决方法
方法一:使用numpy.where(高效简洁)
先构造示例DataFrame,再通过嵌套的numpy.where完成逻辑判断,一行代码即可新增目标列:
import pandas as pd import numpy as np # 构造示例数据 data = { 'home': ['Tampa Bay', 'San Jose', 'New England', 'Colorado', 'New England'], 'away': ['Colorado', 'Colombus', 'San Jose', 'Tampa Bay', 'KC Wizards'], 'home_score': [3, 1, 1, 2, 2], 'away_score': [1, 3, 5, 0, 1] } df = pd.DataFrame(data) # 添加lost_team列,同时处理平局场景 df['lost_team'] = np.where( df['home_score'] > df['away_score'], df['away'], np.where(df['away_score'] > df['home_score'], df['home'], 'Draw') )
方法二:使用pandas.apply(逻辑直观)
如果偏好逐行判断的直观逻辑,可以用apply方法实现:
df['lost_team'] = df.apply( lambda row: row['away'] if row['home_score'] > row['away_score'] else row['home'] if row['away_score'] > row['home_score'] else 'Draw', axis=1 )
最终结果
执行代码后,DataFrame会新增lost_team列,结果如下:
| home | away | home_score | away_score | lost_team |
|---|---|---|---|---|
| Tampa Bay | Colorado | 3 | 1 | Colorado |
| San Jose | Colombus | 1 | 3 | San Jose |
| New England | San Jose | 1 | 5 | New England |
| Colorado | Tampa Bay | 2 | 0 | Tampa Bay |
| New England | KC Wizards | 2 | 1 | KC Wizards |
内容的提问来源于stack exchange,提问作者reksapj
相关产品推荐
相关产品推荐

