如何修正Pandas DataFrame中correct与false值互换的错误?
解决Pandas DataFrame中'correct'与'false'互换的问题
嘿,我来帮你排查下代码里的问题,顺便给出几种靠谱的解决方法~
先说说你代码里的错误
你原来的代码有两个关键问题:
- 第一个
loc的语法写错了:a.loc[(a["outcome"] == 'correct') 'outcome']这里漏掉了逗号,正确的写法应该是a.loc[(a["outcome"] == 'correct'), 'outcome'],用来分隔行筛选条件和列名。 - 用
and把两个赋值语句连在一起是错误的逻辑写法,这会导致Python执行时出现逻辑判断混乱,最终所有值都被改成correct。
推荐的修正方法
这里给你三种简单有效的实现方式,按需选择:
方法1:用临时值过渡(直观易懂)
如果担心直接替换会互相覆盖,可以先用一个临时值中转:
# 先把correct换成临时值,避免后续替换时混淆 a.loc[a["outcome"] == 'correct', 'outcome'] = 'temp' # 把false换成correct a.loc[a["outcome"] == 'false', 'outcome'] = 'correct' # 最后把临时值换成false a.loc[a["outcome"] == 'temp', 'outcome'] = 'false'
方法2:用Pandas的replace方法(最简洁)
Pandas的replace支持字典映射,直接实现双向替换,不需要临时变量:
a['outcome'] = a['outcome'].replace({'correct': 'false', 'false': 'correct'})
方法3:用numpy.where做条件判断
如果你的outcome列只有correct和false两种值,用numpy.where一行搞定:
import numpy as np a['outcome'] = np.where(a['outcome'] == 'correct', 'false', 'correct')
内容的提问来源于stack exchange,提问作者jig
相关产品推荐
相关产品推荐

