在不同条件下更改pandas-df中的列值/在4点likert量表上反转答案



在df中,我有一些列的答案在4点Likert量表上,我需要反转,这意味着我需要翻转该列每行的值:4->1、2->3、3->2、4->1

我试过这个:

questDay1Df.loc[questDay1Df['STAI_State_01'] == 4] = 1
questDay1Df.loc[questDay1Df['STAI_State_01'] == 3] = 2
questDay1Df.loc[questDay1Df['STAI_State_01'] == 2] = 3
questDay1Df.loc[questDay1Df['STAI_State_01'] == 1] = 4

问题是,由于它不在同一个命令中,所以这些行当然是分开运行的。例如,如果在下一行中将3更改为2,则它将再次更改为3。有什么想法可以防止这个问题/如何编写一个同时执行所有这些条件更改的命令吗?

提前非常感谢!

您可以使用.replacement((,但我认为这个解决方案更有趣:(

questDay1Df['STAI_State_01'] = np.abs(questDay1Df['STAI_State_01'] - 5)

.replace()可能性适用范围更广:

questDay1Df['STAI_State_01'] = questDay1Df['STAI_State_01'].replace({
1: 4, 
2: 3, 
3: 2, 
4: 1,
})

最新更新