Oct-30-2019, 02:54 AM
I am trying to turn my data frame into a pivot table. I am getting this error "TypeError: 'DataFrame' objects are mutable, thus they cannot be hashed". Below is my code.
import datetime from datetime import timedelta import numpy as np from openpyxl import load_workbook import pandas as pd import PySimpleGUI as sg layout = [ [sg.Text('Step 1 - Download Low RepSate Data.')], [sg.Text('Step 2 - Click Browse and select file that was just downloaded.')], [sg.Text('Step 3 - Click Ok')], [sg.Text('Step 4 - Wait until All Set screen pops up')], [sg.In() ,sg.FileBrowse(file_types=(("Excel Files", "*.xlsx"),))], [sg.Button('Ok'), sg.Button('Exit')] ] layout2 = [ [sg.Text('All Set.')], [sg.Button('Ok')] ] x = datetime.datetime.now() window = sg.Window('File Location', layout) while True: event, values = window.read() if event in (None, 'Ok'): break if event in (None, 'Exit'): quit() window.close() excel_workbook = values[0] sheet1 = pd.read_excel(excel_workbook) sheet1['Survey Date'] = pd.to_datetime(sheet1['Survey Date']) sheet1['Survey Date'] = pd.to_datetime(sheet1['Survey Date']).dt.strftime('%m-%d-%y') agent = sheet1['Agent'] name = [x[:-7] for x in agent] df_name = pd.DataFrame(name,columns=['Agent']) supervisor = sheet1['Supervisor'] name = [x[:-7] for x in supervisor] df_sup = pd.DataFrame(name,columns=['Supervisor']) temp = sheet1['Rep Sat'].astype(int) passrs = pd.np.where(temp == 1, 0, pd.np.where(temp == 2, 0, pd.np.where(temp == 3, 0, pd.np.where(temp == 4, 1, pd.np.where(temp == 5, 1, "N/A"))))) df_pass = pd.DataFrame(passrs,columns=['Pass']) df_pass = df_pass.apply(pd.to_numeric, errors='coerce') failrs = pd.np.where(temp == 1, 1, pd.np.where(temp == 2, 1, pd.np.where(temp == 3, 1, pd.np.where(temp == 4, 0, pd.np.where(temp == 5, 0, "N/A"))))) df_fail = pd.DataFrame(failrs,columns=['Fail']) df_fail = df_fail.apply(pd.to_numeric, errors='coerce') df_data = pd.concat([sheet1['Survey Date'],sheet1['DataLink ID'],sheet1['UCID'],sheet1['PERNR'],df_name,sheet1['Rep Sat'],df_pass,df_fail,df_sup,sheet1['Low Score Alert'],sheet1['Low Score Coaching Status'],sheet1['Low Score Coaching Disposition'],sheet1['Agent Low Score Coaching Comments'],sheet1['Time to Closed Disposition']],axis=1) table = pd.pivot_table(df_data, values=[df_pass, df_fail], index=[df_sup, df_name], aggfunc=np.sum) table.to_excel("RepSat Information.xlsx", index = False) window = sg.Window('Message', layout2) while True: event, values = window.read() if event in (None, 'Ok'): break window.close()