Ich habe den folgenden Code verhindern:Wie Dreifache Ausführungen in Pandas Dataframe
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])
Was ich nicht passiert sind drei benachbarte Reihen mit dem gleichen „Bedingungen“ Wert erscheinen, zusammen zu verhindern bin versucht. Wenn also meine Bedingungen "1", "2" und "3" sind, möchte ich verhindern, dass eine Reihenfolge wie 1,1,2,2,2,1,3,1 auftritt, wobei der Zustandswert 2 drei erscheint mal hintereinander.
Hier ist eine schnelle Probe eines Teils des 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
Mein Code das Problem nicht lösen. Wäre es besser, eine Pseudozufallsfunktion zu erstellen, anstatt zu versuchen, damit umzugehen, nachdem ich den Datenrahmen bereits zufällig gemischt habe? Jede Hilfe oder Vorschläge würde wirklich helfen.
was wollen Sie erreichen? Wenn das ursprüngliche Dataset keine dieser Tripel hat, können Sie "Blöcke" aus diesem Set auswählen und die Blöcke so mischen, dass die "Kanten" unterschiedliche Werte haben? – maxymoo
Können Sie uns auch einen kleinen Ausschnitt Ihres Dataframes zeigen? – user666
@ user666 hat gerade ein Beispiel hinzugefügt – djl