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

如何交换Pandas DataFrame中某列数值与另一列的对应值?

Pandas DataFrame指定列错误值交换解决方案

问题场景

存在如下结构的DataFrame,其中部分行的last_name列被错误填入了年龄数值,age列则填入了姓氏字符串,需要将这些行的两列值进行交换,正常行保持不变。

创建示例DataFrame

import pandas as pd

df = pd.DataFrame([['Captain', 'Crunch', 72],
                   ['Trix', 36, 'Rabbit'],
                   ['Count', 'Chocula', 41],
                   ['Tony', 54, 'Tiger'],
                   ['Buzz', 28, 'Bee'],
                   ['Toucan', 'Sam', 38]],
                  columns=['first_name', 'last_name', 'age'])

输入DataFrame

first_name last_name    age
0   Captain    Crunch     72
1     Trix       36    Rabbit
2    Count   Chocula     41
3     Tony       54     Tiger
4     Buzz       28       Bee
5   Toucan      Sam     38

解决方案代码

# 筛选出last_name为数字字符串的行
mask = df['last_name'].str.isnumeric()
# 交换这些行的last_name和age列值
df.loc[mask, ['last_name', 'age']] = df.loc[mask, ['age', 'last_name']].values

执行后结果

first_name last_name age
0   Captain    Crunch  72
1     Trix     Rabbit  36
2    Count   Chocula  41
3     Tony      Tiger  54
4     Buzz        Bee  28
5   Toucan      Sam    38

方法说明

  • 利用str.isnumeric()方法识别last_name列中的数字字符串行,生成布尔掩码
  • 通过loc定位到需要交换的行和列,直接将两列的位置反转赋值,实现值交换
  • 该方法仅对存在错误的行生效,不会影响数据正确的行

内容的提问来源于stack exchange,提问作者swilson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 12:01:06