繁体   English   中英

改组 Pandas 数据框行,同时避免连续的条件值

[英]Shuffling pandas data frame rows while avoiding consecutive condition values

我有一个使用熊猫读取的示例数据框。 数据有两列:'item'、'label'。 当我打乱 df 行时,我想确保打乱的 df 没有具有相同连续标签的项目。 IE。 这是可以接受的,因为标签 '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] ,但不确定具体如何。 任何指针或更简单的建议将不胜感激!

感谢您的评论/指点。 我通过以下方式让它工作:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM