改组熊猫数据帧行,同时避免连续的条件值

时间:2019-01-30 22:51:56

标签: python pandas shuffle

我有一个使用熊猫读取的示例数据框。数据有两列:“项目”,“标签”。在对df行进行混洗时,我想确保经过混洗的df中没有具有相同连续标签的项目。 即。这是可以接受的,因为标签“ a”,“ b”和“ c”不是连续的:

1:起火,“ a”

2:冒烟,“ b”

3:蜜蜂,“ a”

4:窗帘,“ c”

但我要避免标签位于连续索引中,即:

  1. 开火,“ a”

  2. 蜂蜜蜂,“ a”

  3. 烟,'b'

  4. 窗帘,“ c”

到目前为止,我可以使用:

df = df.sample(frac=1).reset_index(drop=True)

我有一个模糊的想法,要一直循环到df['label'][i+1] != df['label'][i],但不确定如何执行。任何指针或更简单的建议将不胜感激!

1 个答案:

答案 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