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
相关产品推荐
相关产品推荐

