Как оптимально сравнить два кадра данных? - PullRequest
0 голосов
/ 25 июня 2019

Мне нужно сравнить два текстовых файла

  1. Я не могу найти лучший способ сделать это.
  2. Столбцы отсортированы в алфавитном порядке, и сравнение не удается, если их сравнивать по 50 0 60 столбцам.

Требования следующие:

  1. Сравнение по столбцу:
    file 1 :
    column1 column2 column3
    1       b       c
    2       z       j

    file 2 :
    columnf1 columnf2 columnf3
    1        b       j
    2        z       c

    Result: 

    In the column column1 0 differences 
    In the column column2 0 differences 
    In the column column3 2 differences
    #2. Print the amount of differences and the percentage of differences

    #(100*numberDiferents)/(numberRecords*columnsLen)
    Result:
    2. differences were found. 
    Percentage of difference: 33%

Это мой код, как я могу его оптимизировать? Как изменить положение столбца?

    #create Dataframe file1
    lines = sc.textFile(path_file_one)
    parts = lines.map(lambda l: l.split(";"))   
    file1 = parts.map(lambda co: Row(column1=co[0],                             column2=co[1],column3=co[2],))
    df1 = sqlContext.createDataFrame(file1)

    #create Dataframe file2
    lines = sc.textFile(path_file_one)
    parts = lines.map(lambda l: l.split(";"))   
    file2 = parts.map(lambda co: Row(columnf1=co[0],                             columnf2=co[1],columnf3=co[2],))
    df1 = sqlContext.createDataFrame(file2)

    def get_number_of_differences(df1, df2, columnIdFile1, columnIdFile2):
        quatity = 0
        filetxt1 = df1.alias("filetxt1")
        filetxt2 = df2.alias("filetxt2")
        df3 = filetxt2.join(filetxt1, col('filetxt1.'+columnIdFile1+'') == col('filetxt2.'+columnIdFile2+''), 'inner')

        for cop,xp in itertools.izip(df1.columns,df2.columns):
            diferenceResult=df3.filter(str("{0} != {1}".format(cop,xp))).count()
            quatity += diferenceResult
            files.write(str('\n In the columns file1: {0} file2 {1},  there are {2} differents. \n'.format(cop,xp,diferenceResult)))

        return quatity

    get_number_of_differences(df1, df2, 'column1', 'columnf1')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...