Использование комбинации isin / transform / merge / groupby / map для условного заполнения столбца данных - PullRequest
0 голосов
/ 01 октября 2018

Созерцая несколько вариантов, чтобы понять, какой из них будет наилучшим для приведенного ниже сценария:

У меня есть кадр данных в пандах, который выглядит примерно так:

CODE NAME COL1 COL2 COL3
IN   INDIA  x    x    z
US   USA    r    s    s
IND  INDIA  f   d     d
RU   RUSSIA g    f    d
USA  USA    d    s    s
IN   INDIA  d    d    a

Я хотел бы создатьновый столбец, скажем POSSIBLE_CODES, такой, что это список всех кодов, которые видит соответствующий столбец NAME.Так что мой целевой df должен выглядеть так:

CODE NAME COL1 COL2 COL3 POSSIBLE_CODES
IN   INDIA  x    x    z  [IN, IND]
US   USA    r    s    s  [US, USA]
IND  INDIA  f   d     d  [IN, IND]
RU   RUSSIA g    f    d  [RU]
USA  USA    d    s    s  [US, USA]
IN   INDIA  d    d    a  [IN, IND]

1 Ответ

0 голосов
/ 01 октября 2018

Вы можете создать новую серию, где индексом является ваш столбец NAME, а вашими значениями являются возможные CODE для каждого NAME:

s = df.groupby('NAME').CODE.unique().rename('POSSIBLE')

Теперь с помощью pd.Series.map:

df.assign(POSSIBLE=df.NAME.map(s))

  CODE    NAME COL1 COL2 COL3   POSSIBLE
0   IN   INDIA    x    x    z  [IN, IND]
1   US     USA    r    s    s  [US, USA]
2  IND   INDIA    f    d    d  [IN, IND]
3   RU  RUSSIA    g    f    d       [RU]
4  USA     USA    d    s    s  [US, USA]
5   IN   INDIA    d    d    a  [IN, IND]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...