найти повторяющиеся слова в разделенных запятыми строках в столбце панды и добавить к ним различные префиксы - PullRequest
2 голосов
/ 29 января 2020

У меня есть столбец данных, который выглядит следующим образом, но больше:

df=  pd.DataFrame(["Mina,is,good", "Dania,is,good,good", "Alice,is,good,good,good"]
                 columns=['a'])

Я хочу, чтобы вывод выглядел следующим образом:

df_output=  pd.DataFrame(["Mina,is,good", "Dania,is,A-good,Y-good", "Alice,is,A-good,Y-good,Z-good"]
          columns=['a'])

Поэтому я хочу добавить префикс, если слово повторяется, но есть также три разных префикса: если слово повторяется один раз, я хочу добавить («A-», «Y-»), а если слово повторяется дважды, я хочу добавить (« A- "," Y- "," Z - ")

Заранее спасибо

1 Ответ

1 голос
/ 29 января 2020

Вам может понадобиться пользовательская функция, как показано ниже: cumcount:

def fun(x):
    d = {0:'A-',1:'Y-',2:'Z-'} # mapping dictionary
    s = pd.Series(x.split(',')) #split each row as list and treat as series
    mask = s.duplicated(keep=False) #check for cases only which are duplicated
    s[mask] = s[mask].groupby(s).cumcount().map(d) + s[mask]
    return ','.join(s)

df['a'].apply(fun)

0                     Mina,is,good
1           Dania,is,A-good,Y-good
2    Alice,is,A-good,Y-good,Z-good
Name: a, dtype: object
...