Замена значений из одного столбца на другие несколько раз - PullRequest
1 голос
/ 23 апреля 2020

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

      id  new_id
  0   00     11
  1   11     22
  2   22      3
  3   89    100
  4   101   102

Я хочу использовать этот фрейм данных, чтобы заменить старые идентификаторы новыми, и для этого я хочу, чтобы фрейм данных выглядел так:

      id  new_id
  0   00      3
  1   11      3
  2   22      3
  3   89    100
  4   101   102

Таким образом, каждый раз, когда значение id присутствует в столбце new_id, я хочу заменить это значение id новым значением id новым значением id, которого нет в столбце id. Как мне этого добиться?

Спасибо за любую помощь заранее!

1 Ответ

3 голосов
/ 23 апреля 2020

Грубая сила

m = dict(zip(df.id, df.new_id))
new = df.new_id.replace(m)
while not new.equals(df.new_id):
    df['new_id'] = new
    new = df.new_id.replace(m)

df

    id  new_id
0    0       3
1   11       3
2   22       3
3   89     100
4  101     102

Меньше грубой

def recursed_dict(d):
    for k, v in d.items():
        while v in d:
            v = d[v]
        yield k, v

m = dict(recursed_dict(dict(zip(df.id, df.new_id))))

df['new_id'] = df.new_id.replace(m)

df

    id  new_id
0    0       3
1   11       3
2   22       3
3   89     100
4  101     102
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...