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

如何在不引用列名的前提下,按条件转换表格非指定列数值为负数

问题描述

需要对表格数据执行以下转换:当"Agree, Disagree"列的值为"Disagree"或"Strongly disagree"时,将该行中除该列外的所有数值列转换为负数,且操作过程中不得引用具体数值列的列名。

原始数据

Agree, DisagreeQuestion AQuestion BQuestion C
Strongly agree112
Agree130
Neutral103
Disagree200
Strongly disagree121

预期转换结果

Agree, DisagreeQuestion AQuestion BQuestion C
Strongly agree112
Agree130
Neutral103
Disagree-200
Strongly disagree-1-2-1

实现方案(Python pandas)

核心逻辑

  1. 动态定位"Agree, Disagree"列,自动识别所有其他数值列,无需硬编码列名
  2. 筛选出符合转换条件的行(值为"Disagree"或"Strongly disagree")
  3. 对筛选出的行的非目标列数值乘以-1完成转换

代码示例

import pandas as pd

# 构造数据(实际场景可从CSV/Excel等文件读取)
data = {
    "Agree, Disagree": ["Strongly agree", "Agree", "Neutral", "Disagree", "Strongly disagree"],
    "Question A": [1, 1, 1, 2, 1],
    "Question B": [1, 3, 0, 0, 2],
    "Question C": [2, 0, 3, 0, 1]
}
df = pd.DataFrame(data)

# 动态获取目标列和非目标列
target_col = df.columns[df.columns == "Agree, Disagree"]
non_target_cols = df.columns.difference(target_col)

# 生成转换条件掩码
convert_mask = df[target_col].isin(["Disagree", "Strongly disagree"]).values.flatten()

# 执行数值转换
df.loc[convert_mask, non_target_cols] *= -1

# 输出结果
print(df)

代码说明

  • df.columns.difference(target_col):自动获取除目标列外的所有列,避免硬编码列名
  • isin(["Disagree", "Strongly disagree"]):精准筛选需要转换的行
  • loc[convert_mask, non_target_cols] *= -1:仅对符合条件的行的指定列执行负数转换,不影响其他行数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 00:50:28