如何在Pandas中基于Player和Opponent条件生成Death列
实现思路与代码方案
核心需求是:为每行数据新增Death列,该列的值为当前行Opponent作为玩家时,对应当前行Player的击杀数(即匹配Player与Opponent互换后的行的Kill值)。
方案1:Python Pandas 实现
通过自合并的方式,将原表与重命名后的自身表进行匹配,直接获取对应Death值:
import pandas as pd # 构造原始数据集 df = pd.DataFrame({ 'Player': ['dicey', 'OXY', 'Verno', 'dapr'], 'Opponent': ['OXY', 'dicey', 'dapr', 'Verno'], 'Kill': [4, 6, 5, 7] }) # 自合并获取Death列 df = df.merge( # 重命名列,将Player与Opponent互换,Kill改为Death df.rename(columns={'Player': 'Opponent', 'Opponent': 'Player', 'Kill': 'Death'}), on=['Player', 'Opponent'], how='left' ) # 输出结果 print(df)
执行后输出的结果即为目标表格:
| Player | Opponent | Kill | Death |
|---|---|---|---|
| dicey | OXY | 4 | 6 |
| OXY | dicey | 6 | 4 |
| Verno | dapr | 5 | 7 |
| dapr | Verno | 7 | 5 |
方案2:SQL 实现
通过表的自连接,匹配Player与Opponent互换的行,将对应行的Kill值作为Death:
假设数据表名为player_stats,执行以下SQL语句:
SELECT t1.Player, t1.Opponent, t1.Kill, t2.Kill AS Death FROM player_stats t1 INNER JOIN player_stats t2 ON t1.Player = t2.Opponent AND t1.Opponent = t2.Player;
查询结果将直接返回包含Death列的目标数据。
内容的提问来源于stack exchange,提问作者Octa
相关产品推荐
相关产品推荐

