根据另一列替换数据帧循环中所有列值的简单方法
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 列获取结果。
我想更改正确选项的值或简单地根据正确选项值中给出的信息创建一个新列,我尝试循环遍历索引并更改它,但比较代码不起作用,我什至之前尝试过 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 列获取结果。