python pandas объединяет строки с одинаковыми значениями в последовательности и переупорядочивает (удаляет дубликаты в последовательности) - PullRequest
0 голосов
/ 12 ноября 2018

Допустим, у меня есть следующая таблица:

ID    FRUIT    ORDER
01    apple    1
01    apple    2
01    peach    3
01    apple    4
02    melon    1
02    apple    2
02    apple    3
02    apple    4

Теперь я хочу объединить строки в одном и том же идентификаторе, когда значения итеративным образом равны (исключить дубликаты, если они в последовательности), и переопределить номер заказа, например,

ID    FRUIT    ORDER
01    apple    1
01    peach    2
01    apple    3
02    melon    1
02    apple    2

РЕДАКТИРОВАТЬ: Я забыл изменить порядок. Как и выше: порядок должен быть перестроен итеративно

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Я думаю, что это будет легко:

>>> df
   ID  FRUIT  ORDER
0  01  apple      1
1  01  apple      2
2  01  peach      3
3  01  apple      4
4  02  melon      1
5  02  apple      2
6  02  apple      3
7  02  apple      4

>>> df[df['FRUIT'] != df['FRUIT'].shift(1)]
   ID  FRUIT  ORDER
0  01  apple      1
2  01  peach      3
3  01  apple      4
4  02  melon      1
5  02  apple      2
0 голосов
/ 12 ноября 2018

Используйте boolean indexing для фильтрации только первых последовательных значений с cumcount для нового заказа:

a = df['ID'] + df['FRUIT']
#if necessary
#a = df['ID'].astype(str) + df['FRUIT']
df = df[a.ne(a.shift())]
df['ORDER'] = df.groupby('ID').cumcount().add(1)
print (df)
   ID  FRUIT ORDER
0  01  apple     1
2  01  peach     2
3  01  apple     3
4  02  melon     1
5  02  apple     2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...