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

问题描述 投票:0回答:1

我有一个pandas数据框架,它看起来像这样。

      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

所以每当一个id值出现在new_id列中时 我想用新的id值来替换这个id值 这个新的id值没有出现在id列中 我怎样才能实现这个目标?

先谢谢你的帮助

pandas dataframe data-science
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.