Перестановка строк фрейма данных панд, избегая последовательных значений условий - PullRequest
0 голосов
/ 31 января 2019

У меня есть примерный фрейм данных, прочитанный с использованием панд.Данные имеют два столбца: «элемент», «метка».В то время как я тасую строки df, я хочу убедиться, что у shuffled 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 голосов
/ 01 февраля 2019

Спасибо за комментарии / указатели.Я получил его на работу по:

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
...