首页 > 解决方案 > Python Pandas 可以突出单个标志吗?

问题描述

我对整个 python 开发真的很陌生并且有一个问题。我想达到以下结果:

结果图片

然而,在我的研究中,我只发现了改变整个单元格样式的可能性。

我正在逐个字符进行完整的比较,并希望相应地为各个字符着色。

也许这也可以用 Python 来完成(我的 VBA 脚本很慢)。

到目前为止,这是我的 python 脚本:

import pandas as pd
import numpy as np

path = "XXXXX"

data = pd.read_csv(path, names=["Dir1", "Dir2", "File1",    "File2",
                   "Diff",  "Line1",    "A",    "Line2",    "B"], sep="|")

line = 1

for ind in data.index:

    if data.A[ind] == data.B[ind]:
        var_ok = True
    else:
        #Work just with different Values
        var_ok = False
        var_length_A = len(str(data.A[ind]))
        var_length_B = len(str(data.B[ind]))
        #check length
        #A is longer
        if var_length_A > var_length_B:
            var_longer = var_length_A
        #Atos is longer
        elif var_length_A < var_length_B:
            var_longer = var_length_B
        #Same length
        else:
            var_longer = var_length_A

    for count in range(1,var_longer):
        #read every sign
        var_sign_A = mid(data.A[ind],count,1)
        var_sign_B = mid(data.B[ind],count,1)

        if var_sign_A != var_sign_B:
            #highlight this
        else:
            #Do nothing


    print([ind], "|\t", data.A[ind], "|\t", data.B[ind], "|\t",
          var_ok, "|\t", var_length_A, "|\t", var_length_B, "|\t", var_longer)

这是我的 VBA 脚本的一部分:

 'Wenn beide gefüllt sind
                Else
                    counter = 1
                    'Zeichen für Zeichen abgleich
                    For counter = counter To leng
                        If Mid(Cells(zeile, Spalte1), counter, 1) <> Mid(Cells(zeile, Spalte2), counter, 1) Then
                            
                            With Cells(zeile, Spalte2).Characters(start:=counter, Length:=1).Font
                                .Color = var2
                                .FontStyle = "Fett"
                            End With
                            With Cells(zeile, Spalte1).Characters(start:=counter, Length:=1).Font
                                .Color = var2
                                .FontStyle = "Fett"
                            End With
                        Else
                            With Cells(zeile, Spalte2).Characters(start:=counter, Length:=1).Font
                                .Color = var1
                                .FontStyle = "Standard"
                            End With
                            
                            With Cells(zeile, Spalte1).Characters(start:=counter, Length:=1).Font
                                .Color = var1
                                .FontStyle = "Standard"
                            End With
                        End If
                    Next
                End If
            End If

BR&谢谢你:)

马塞尔

标签: pythonexcelpandashighlight

解决方案


推荐阅读