我有以下代码:
stim_df = pd.concat([block1,block2,bloc3,block4], axis=0, ignore_index=True).sample(frac=1).reset_index(drop=True)
stim_df.columns = ["Word","Condition"]
#Check for triplicates:
for j in xrange(len(stim_df)):
if j == 0 or j == 1:
pass
else:
if stim_df["Condition"][j] == stim_df["Condition"][j-1] == stim_df["Condition"][j-2]:
stim_df[j-2:j+3] = stim_df[j-2:j+3].reindex([j-2,j-1,j+2,j,j+1])
我试图防止发生的是,具有相同"Conditions"值的三个相邻行出现在一起。因此,如果我的条件是"1"、"2"one_answers"3",我想防止出现类似1,1,2,2,1,3,1的顺序,其中条件值2连续出现三次。
以下是df:的一部分的快速样本
Condition Word
0 1 neut
1 2 pos
2 3 neg
3 3 neg
4 3 neg
5 2 pos
6 1 neut
7 2 pos
8 2 pos
9 2 pos
10 2 pos
我的代码不能解决问题。创建一个伪随机函数,而不是在我已经随机混合了数据帧之后尝试处理它,会更好吗?任何帮助或建议都会很有帮助。
您希望生成一个没有重复的序列,还是只删除像2,2,2
这样的序列?
如果您正在寻找后者,请尝试使用diff
来删除重复序列。
df[~(df.Condition.diff() == 0)]
Condition Word
0 1 neut
1 2 pos
2 3 neg
5 2 pos
6 1 neut
7 2 pos