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

如何在DataFrame中交换特定行的对应列值?附示例需求

交换DataFrame中指定城市的Score值

你完全不用通过遍历行来实现这个需求,pandas的矢量化操作能更高效、简洁地完成交换,尤其适合大型DataFrame。

步骤说明:

  1. 先获取Muscat和Shanghai当前的Score值
  2. 直接通过条件定位更新两个城市的Score

具体代码实现:

首先,整理你提供的样本数据为标准的DataFrame结构:

import pandas as pd

data = {
    'City': ['Istanbul', 'Muscat', 'Prague', 'Shanghai', 'Istanbul', 'Singapore'],
    'Score': [6.0749, 2.23607, 4.38576, 1.85958, 6.0749, 5.17054]
}
df = pd.DataFrame(data)

执行交换操作:

# 获取两个城市的当前Score值
muscat_score = df.loc[df['City'] == 'Muscat', 'Score'].iloc[0]
shanghai_score = df.loc[df['City'] == 'Shanghai', 'Score'].iloc[0]

# 交换Score值
df.loc[df['City'] == 'Muscat', 'Score'] = shanghai_score
df.loc[df['City'] == 'Shanghai', 'Score'] = muscat_score

效果验证:

执行后你的DataFrame会完全符合期望输出:

City    Score
0   Istanbul  6.07490
1      Muscat  1.85958
2      Prague  4.38576
3    Shanghai  2.23607
4   Istanbul  6.07490
5  Singapore  5.17054

为什么不推荐遍历?

遍历DataFrame行(比如用iterrows())在处理大型数据集时效率极低,pandas的核心优势就是矢量化操作——它会在底层批量处理数据,速度比循环快几个数量级,代码也更易读维护。如果你的DataFrame里有多个同名的Muscat或Shanghai行,上面的代码也能自动更新所有符合条件的行,非常灵活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:00:03