You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas:如何基于条件添加值反转的行至DataFrame

生成反转对战行并合并至原DataFrame

问题场景

现有如下结构的DataFrame:

match     team         opponent venue  
233   3b0345fb  Brazil     Argentina  Home       
234   3b2357fb  Argentina     Brazil  Away       
427   3b0947fb  England       Poland  Home           
...

需完成两个核心操作:

  1. 筛选出team为England的行,得到如下切片:
match   team    opponent venue  
559   4a3eae2f  England  Poland  Home  
...
  1. 为该切片的每一行生成反转行(交换team与opponent的值,将venue的Home替换为Away),并把这些反转行追加到原DataFrame中。

实现代码

import pandas as pd

# 假设原DataFrame为df
# 1. 筛选目标行
england_rows = df[df['team'] == 'England']

# 2. 生成反转行
reversed_rows = england_rows.copy()  # 复制数据,避免修改原切片
# 交换team和opponent列
reversed_rows[['team', 'opponent']] = reversed_rows[['opponent', 'team']].values
# 替换venue值
reversed_rows['venue'] = reversed_rows['venue'].str.replace('Home', 'Away')

# 3. 合并原DataFrame与反转行
final_df = pd.concat([df, reversed_rows], ignore_index=True)

关键细节说明

  • 使用.copy()复制筛选行:避免直接修改原切片导致的链式赋值警告,同时保证原数据不受影响
  • 交换列值时用.values:规避pandas因列名重复引发的赋值异常
  • ignore_index=True:合并后重置索引,避免出现重复的行索引

内容的提问来源于stack exchange,提问作者8-Bit Borges

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 08:25:21