根据另一列替换数据帧循环中所有列值的简单方法

A simple way to replace all column values in a loop of a dataframe according to another column

我想更改正确选项的值或简单地根据正确选项值中给出的信息创建一个新列,我尝试循环遍历索引并更改它,但比较代码不起作用,我什至之前尝试过 iteritems 但失败了。谁能告诉我如何解决这个问题。

 In[] df
Out[] **ques opt1 opt2 opt3 opt4  correctOpt**
        q1   red  blue grey green opt1
        q2   red  blue grey green opt3

我试过了

for col in df.index:
 df.replace(to_replace=df['Correct Option'][col], value = df[[col],['Correct option']],[col]) 

得到位置增补跟随关键字增补错误

我正在尝试将其作为输出或新列中的相同列行值

Out[] correctOpt
      red
      grey

谢谢

你可以直接使用apply函数如下:

df = pd.DataFrame([['q1','red','blue','grey','green','opt1'],
                    ['q2','red','blue','grey','green','opt3']], 
                    columns=['ques','opt1','opt2','opt3','opt4','correctOpt'])

df.apply(lambda row: row['opt'+row['correctOpt'][3]], axis=1)

apply 函数将自定义函数应用于 DataFrame 中的每一行。 'axis=1' 为自定义函数提供 DataFrame ROW 作为参数(而不是列),然后 row['correctOpt'][3] 获得正确的选项编号,row['opt'+row[ 'correctOpt'][3]] 从 opt 列获取结果。