gpt4 book ai didi

python - 反加入 Pandas

转载 作者:IT老高 更新时间:2023-10-28 20:33:39 24 4
gpt4 key购买 nike

我有两个表,我想附加它们,以便仅保留表 A 中的所有数据,并且仅在其键是唯一的情况下才添加表 B 中的数据(键值在表 A 和 B 中是唯一的,但是在在某些情况下,表 A 和 B 中都会出现 Key)。

我认为执行此操作的方法将涉及某种过滤联接(反联接)以获取表 B 中未出现在表 A 中的值,然后附加两个表。

我熟悉 R,这是我在 R 中用来执行此操作的代码。

library("dplyr")

## Filtering join to remove values already in "TableA" from "TableB"
FilteredTableB <- anti_join(TableB,TableA, by = "Key")

## Append "FilteredTableB" to "TableA"
CombinedTable <- bind_rows(TableA,FilteredTableB)

如何在 python 中实现这一点?

最佳答案

merge 命令中的

indicator = True 将通过创建具有三个可能值的新列 _merge 来告诉您应用了哪个联接:

  • left_only
  • right_only
  • 两者

保留 right_onlyleft_only。就是这样。

outer_join = TableA.merge(TableB, how = 'outer', indicator = True)

anti_join = outer_join[~(outer_join._merge == 'both')].drop('_merge', axis = 1)


简单!

这是与 piRSquared 解决方案的比较:

1) 在这个基于一列匹配的示例上运行时,piRSquared 的解决方案更快。

2) 但它只适用于匹配一列。如果您想匹配多列 - 我的解决方案与一列一样好。

所以由你来决定。

enter image description here

关于python - 反加入 Pandas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38516664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com