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

标签 python pandas row lookup

有两个数据帧 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逗号分隔。派生 Depend 列的 list。派生 dfB 列表。使用sets 比较列表,并使用np.where (condition, True if Condition, False if condition)。这里的条件是列表之间的公共(public)长度应等于4或超过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 - 使用 pandas 查找另一个 df 中一行的所有单元格,如果全部存在则返回标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63769147/

相关文章:

python - 在 Jupyter Notebook 中消失的 Plotly plotly ?

Python 报告实验室 RML。如何在两个页面上拆分表格行

python - 将 RDD 行拆分到 Pyspark 中的不同列

python - 不同的服务器使用相同的参数生成不同的 JWT token

python - 以特定方式删除 mysqldb 中的重复行

python - 使用 Python 将 .doc 转换为纯文本

python - 为什么我的 print() 命令在控制台中显示 double ?

python - mplfinance 中是否有 plt.scatter 的等价物?如何在mplfinance中绘制数据点?

python - 使用 Python dataframe 高效地将数百万行写入文件

python - 使用Python根据值删除Arc Map中的单个行