создать новый столбец pandas на основе сопоставления значений из предыдущих записей - PullRequest
0 голосов
/ 27 марта 2020

У меня есть pandas фрейм данных с именем и идентификатором столбцов, как и входные данные ниже. Я хотел бы создать новый столбец «метка» таким образом, чтобы, если запись с идентификатором, на единицу меньше текущей записи, имела такое же значение имени, тогда текущая запись имела бы то же значение алфавита c в столбце метки, что и предыдущая запись. Если оно имеет другое значение в имени, то я хотел бы перейти к следующему значению в алфавитном порядке c. Ниже приведены примеры выходных данных, чтобы проиллюстрировать, что я пытаюсь сделать. Кто-нибудь знает хитрый способ сделать это с pandas или другим способом?

входные данные:

name id
cat   0
cat   1
dog   2
frog  3

выходные данные:

label name id
A     cat   0
A     cat   1
B     dog   2
C     frog  3

1 Ответ

0 голосов
/ 27 марта 2020

здесь один из способов:

from string import ascii_uppercase
from itertools import count



gen_letter = ((c * i for c in ascii_uppercase) for i in count(1))
r = []
for i, t in df.name.eq(df.name.shift()).items():
    if t:
        r.append(r[i - 1])
    else:
        r.append(next(gen_letter))

df['label'] = r

enter image description here

это решение для многих ярлыков после окончания sh алфавит будет go как: «AA», «BB» ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...