[英]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”
但我想避免标签在连续索引中,即:
火,'a'
蜜蜂,'a'
烟,'b'
窗帘,'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.