我有一个使用熊猫读取的示例数据框。数据有两列:“项目”,“标签”。在对df行进行混洗时,我想确保经过混洗的df中没有具有相同连续标签的项目。 即。这是可以接受的,因为标签“ a”,“ b”和“ c”不是连续的:
1:起火,“ a”
2:冒烟,“ b”
3:蜜蜂,“ a”
4:窗帘,“ c”
但我要避免标签位于连续索引中,即:
开火,“ a”
蜂蜜蜂,“ a”
烟,'b'
窗帘,“ c”
到目前为止,我可以使用:
df = df.sample(frac=1).reset_index(drop=True)
我有一个模糊的想法,要一直循环到df['label'][i+1] != df['label'][i]
,但不确定如何执行。任何指针或更简单的建议将不胜感激!
答案 0 :(得分:0)
感谢评论/指针。我得到它的工作依据:
randomized = False
while not randomized:
xlist = xlistbase.sample(frac=1).reset_index(drop=True) # where xlistbase is the original file read in
# check for repeats
for i in range(0, len(xlist)):
try:
if i == len(xlist) - 1:
randomized = True
elif xlist['label'][i] != xlist['label'][i+1]:
continue
elif xlist['label'][i] == xlist['label'][i+1]:
break
except IndexError:
pass