将一列中的值替换为其他值多次

时间:2020-04-23 15:34:27

标签: pandas dataframe data-science

我有一个熊猫数据框,如下所示:

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

我想使用此数据框将旧ID替换为新ID,为此,我想使数据框看起来像这样:

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

因此,每当new_id列中存在一个id值时,我都想用新的id值替换该id值,即该id列中不存在的新id值。 我该如何实现?

谢谢您的帮助!

1 个答案:

答案 0 :(得分:3)

蛮力

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