如何在DataFrame中交换特定行的对应列值?附示例需求
交换DataFrame中指定城市的Score值
你完全不用通过遍历行来实现这个需求,pandas的矢量化操作能更高效、简洁地完成交换,尤其适合大型DataFrame。
步骤说明:
- 先获取Muscat和Shanghai当前的Score值
- 直接通过条件定位更新两个城市的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
相关产品推荐
相关产品推荐

