neo4j 比较两列与单词表并突出显示 Dataframe 中的差异

p8ekf7hl  于 2022-11-05  发布在  其他
关注(0)|答案(1)|浏览(137)

我正在尝试创建一个函数来审核帐户之间的访问权限。数据由neo4j数据库提供。我想实现的是逐行比较两个单元格,一个在第4列,另一个在第8列。我还想突出显示差异。这些单元格包含一个单词(访问权限)列表,如下所示:

ID| User A | ROLES | Rights | SOME INFO | USER B| ROLES | RIGHTS 
-----------------------------------------------------------------
1 | titi   | Reader|[a,b,d] | blalbalbla| toto  | writer|[c,d,f,a]
------------------------------------------------------------------
2 | tata   | Manage|[b,f,g] | blalblalba| tutu  | Reader|[a,b,d]

我想比较titi的权利和toto的权利,tata和tutu的权利,并强调不同之处。
我的职能是:

def _render_results(self, queries):
    num_queries = len(queries)
    # For each selected query
    for counter, q in enumerate(queries, 1):
        # Print result
        if q['result']:
            df = pandas.DataFrame(q['result'])
            # Replace header
            df = df[1:]
            df.columns = q['headers']
            # Table settings
            pandas.set_option('display.max_rows', 500000)
            pandas.set_option('display.max_colwidth', 0)
            display(df)  
        else:
            self.printmd("No Results !")

我用display函数来渲染,但是我找不到比较和高亮的方法。你知道怎么做吗?

5sxhfpxr

5sxhfpxr1#

希望这是你正在寻找的解决方案。

df=pd.DataFrame({'ID': [1,2],
                 'User A': ['titi', 'tata'],
                 'ROLES1': ['Reader', 'Manage'],
                 'Rights': [['a','b','d'], ['b','f','g']],
                 'SOME INFO': ['blalbalbla', 'blalbalbla'],
                 'USER B': ['tutu', 'toto'],
                 'ROLES2': ['writer', 'reader'],
                 'RIGHTS': [['c','d','f','a'], ['a','b','d']]})

df['diff'] = df.apply(lambda x: list(set(x['Rights']) - set(x['RIGHTS'])), axis = 1)

print(df)

相关问题