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

pandas中如何按指定条件交换DataFrame的两列数值

实现代码

你猜测的np.where思路完全可以实现需求,以下是完整可运行的代码:

方法1:使用np.where实现

import pandas as pd
import numpy as np

# 构造示例DataFrame,可替换为自己的数据源
df = pd.DataFrame({
    'COL1': ['A','C','E','G','I','K','M','O'],
    'COL2': ['B','D','F','H','J','L','N','P'],
    'Value': ['-','+','+','-','-','-','-','+']
})

# 生成条件掩码:匹配Value等于'-'的行
m = df['Value'].eq('-')
# 按条件交换两列数值
df['COL1'], df['COL2'] = np.where(m, [df['COL2'], df['COL1']], [df['COL1'], df['COL2']])

方法2:使用.loc索引直接赋值(性能更高,适合大数据量场景)

m = df['Value'].eq('-')
# 直接对符合条件的行交换两列取值,加.values是为了对齐索引避免赋值失败
df.loc[m, ['COL1', 'COL2']] = df.loc[m, ['COL2', 'COL1']].values

处理后结果

运行上述代码后输出结果如下:

COL1 COL2 Value
0    B    A     -
1    C    D     +
2    E    F     +
3    H    G     -
4    J    I     -
5    L    K     -
6    N    M     -
7    O    P     +

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 11:36:07