避免连续条件值的情况下洗牌熊猫数据框行

2024-09-23 00:23:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个使用pandas读取的示例数据帧。数据有两列:“item”和“label”。当我洗牌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]有一个模糊的想法,但不知道具体怎么做。任何指点或更简单的建议将不胜感激!你知道吗


Tags: 数据sample示例pandasdfindex标签item
1条回答
网友
1楼 · 发布于 2024-09-23 00:23:28

谢谢你的评论/指点。我是通过以下方式实现的:

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

相关问题 更多 >