我有一个数据框,其值如('ABC'或'BCD'),另一字典格式为[{ID:'ABC',StList:['ABC','BCD','DEF' ]},{ID:'DEF',StList:['ABC','CCC','DEF']} ....]
df = ['ABC' or 'BCD',.....]
dictList = [{ID: 'ABC', StList: ['ABC','BCD','DEF']},{ID: 'DEF', StList: 'ABC','CCC','DEF']}....]
我必须遍历数据帧,检查列中的每个值是否存在于StList中-如果为true,则返回ID,然后将ID附加到另一个列表中。
为此,我使用了嵌套循环,但效果不理想-性能方面。还有另一种方法可以解决这个问题吗?
编辑:我尝试过的替代方法
Df1 = ['ABC', 'ABC' or 'BCD', 'ZYB', ('ABC' and 'CD') or 'NMM']
DF2 = [{ID:Testing, STList: ['ABC','BCD','ZYY','NMM'],{ID:Testing2, STList: ['ABC'].......}]
对于DF1的第一行: 返回结果应类似于final_result = ['Testing','Testing2'],然后它将在DF1中针对第一行进行更新。
是否有一种使用数据框功能实现此目标的方法-它在某些行中也具有布尔逻辑,也需要对其进行评估?
答案 0 :(得分:0)
这个问题的答案是:否
没有任何可能的方法来阻止嵌套循环以提高性能。为了扫描字典/数组中的每个数据,它需要进行迭代才能到达索引的峰值节点。您可以使用选择器(column&rows)/ indexs来手动查找特定元素,但不适用于您的方案。