首页 > 解决方案 > 如何聚合映射表?

问题描述

我不知道如何将我的问题用语言表达出来,所以我无法具体搜索。我搜索了一段时间,但找不到适合我的问题的解决方案。我知道我可以通过多次迭代所有行来创建自定义解决方案,但我希望有一种更有效的方法来解决问题。这是我拥有的数据框:

id_old  id_new
A1      A2
A2      A3
A4      A5

这是一个映射表,我想更改第一行,因为 ID 已再次更新。

我寻找这个结果:

id_old  id_new
A1      A3
A2      A3
A4      A5

欢迎任何帮助:-)

最好的

标签: pythonpandasdataframeaggregate

解决方案


国际大学联盟:

尝试通过mask()bfill()

df['id_new']=df['id_new'].mask(df['id_new'].isin(df['id_old'])).bfill()

解释:

检查“id_new”的值是否在“id_old”中isin()

所以isin()方法给了我们一个布尔序列,所以我们将该序列传递给mask()方法,所以基本上条件匹配mask()方法放置的位置,NaN因为我们将它链接在“id_new”列上,所以它将给出NaN掩码中的值在哪里是真,哪里是假它将给出“id_new”列的值

bfill()最后通过方法填充值


推荐阅读