Создайте скрипт на Python, который сравнивает несколько файлов Excel(снимков), сравнивает и создает новый фрейм данных со строками, которые отличаются

#pandas #dataframe #validation #compare #difference

Вопрос:

Я новичок в Python и буду признателен вам за помощь. Я хотел бы создать скрипт на python, который выполняет проверку данных, используя мой первый файл excel_file[0] в качестве df1 и сравнивая его с несколькими другими файлами excel_file[0:100] и просматривая их, сравнивая с df1 и добавляя те строки, которые отличаются от нового фрейма данных df3. Несмотря на то, что у меня есть несколько столбцов, я хотел бы основывать свое сравнение на двух столбцах, которые включают столбец первичного ключа; таким образом, если ключи в двух кадрах данных совпадают; затем сравните df1 и df2(цикл). Вот что я попробовал..

  ***## import python module: pandasql which allows SQL syntax for Pandas;  It needs installation first though:pip install -U pandasql  from pandasql import sqldf  pysqldf = lambda q: sqldf(q, locals(), globals() )  dateTimeObj = dt.datetime.now()  print('start file merge: ' ,dateTimeObj) #path = os.getcwd() ##files = os.listdir(path1) files=os.path.abspath(mydrive') files dff1 = pd.DataFrame() ##df2 = pd.DataFrame() # method 1 excel_files = glob.glob(files  "*.xlsx") ##excel_files = [f for f in files if f[-4:] == '*.xlsx' or f[-3:] == '*.xls'] df1=pd.read_excel(excel_files[14]) for f in excel_files[0:100]:    df2 = pd.read_excel(f)  ## Lets drop the any unanamed column  ##df1=df1.drop(df1.iloc[:, [0]], axis = 1)  ### Gets all Rows and columns which are diffirent after comparing the two dataframes ; The   clause " _key HAVING COUNT(*)= 1" resolves to True if the two dataframes are diffirent  ### Else we use The clause " _key HAVING COUNT(*)= 2" to output similar rows and columns  data=pysqldf("SELECT * FROM ( SELECT * FROM df1 UNION ALL SELECT * FROM df2) df1 GROUP BY _key   HAVING COUNT(*) = 1 ;")    ## df = dff1.append(data).reset_index(drop = True) print(dt.datetime.now().strftime("%x %X") ': files appended to make a Master file')***