gpt4 book ai didi

python - 在另一个 df 中查找一行的所有单元格,如果所有单元格都存在,则使用 Pandas 返回标志

转载 作者:行者123 更新时间:2023-12-04 08:57:04 26 4
gpt4 key购买 nike

有两个数据帧 A 和 B,df A 如下所示,包括主节点及其对每个节点的依赖:

 NODE          Depend
===== =============================
T1234 T1235 T1236 T1237 T1238
-------------------------------------
B1234 B1235 B1236 B1237 B1238
-------------------------------------
N1234 N1235 N1236 N1237 N1238
-------------------------------------
我想在 df B 中查找来自 df A 的每一行,以找出它们是否都在 df B 中可用。
Node
=====
T1234
T1235
T1236
T1237
T1238
B1234
B1235
B1238
N1234
N1237
如果一行中的所有单元格(包括 df A 的主节点)在 df B 中都可用,则返回 True 标志,否则在 df A 中返回 False 作为新列,如下所示:
 NODE          Depend                 flag
===== ============================= =====
T1234 T1235 T1236 T1237 T1238 T
-------------------------------------------
B1234 B1235 B1236 B1237 B1238 F
-------------------------------------------
N1234 N1235 N1236 N1237 N1238 F
-------------------------------------------
通过 Pandas 执行此操作的最有效方法是什么?我尝试了很多方法,例如合并两个 df,但发现无法将整行与 df B 中的查找进行比较。

最佳答案

我会做 dfA逗号分隔。导出 list栏目Depend .导出dfB的列表.比较 lists使用 sets并使用 np.where (condition, True if Condition, False if condition) .这里的条件是 lists 之间的共同长度应该等于 four或超过 3 .

print(dfA)#Separated by comma


NODE Depend
0 T1234 T1235,T1236,T1237,T1238
1 B1234 B1235,B1236,B1237,B1238
2 N1234 N1235,N1236,N1237,N1238

s=list(dfB.Node.values.tolist())#dfB into a list
dfA.Depend=dfA.Depend.str.split(',')#dfA.Depend into a list


dfA['flag']=np.where(dfA.Depend.apply(lambda x:len([*{*x}&{*s}])>3), 'T','F')
print(dfA)



NODE Depend flag
0 T1234 [T1235, T1236, T1237, T1238] T
1 B1234 [B1235, B1236, B1237, B1238] F
2 N1234 [N1235, N1236, N1237, N1238] F

关于python - 在另一个 df 中查找一行的所有单元格,如果所有单元格都存在,则使用 Pandas 返回标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63769147/

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