geekcomputers / Python

My Python Examples
http://www.thegeekblog.co.uk
MIT License
30.95k stars 12.16k forks source link

UnboundLocalError: local variable 'data' referenced before assignment #1131

Open Bennniii96 opened 3 years ago

Bennniii96 commented 3 years ago

import xlsxwriter import pandas as pd import openpyxl import pandas as pd

current=1 i = 0 counter=0

Create some Pandas dataframes from some data.

df1 = pd.DataFrame({'Data1': [11, 12, 13, 14]}) df2 = pd.DataFrame({'Data2': [21, 22, 23, 24,25]}) df3 = pd.DataFrame({'Data3': [31, 32, 33, 34,35,36]}) df4 = pd.DataFrame({'Data4': [41, 42, 43, 44,45,46,47]}) df5 = pd.DataFrame({'Data5': [51, 52, 53, 54,55,56,57,58]})

Create a Pandas Excel writer using XlsxWriter as the engine.

writer = pd.ExcelWriter('pandas_positioning.xlsx', engine='xlsxwriter')

Position the dataframes in the worksheet.

df1.to_excel(writer, sheet_name='Sheet1',startrow=0) # Default position, cell A1. df2.to_excel(writer, sheet_name='Sheet1', startcol=0,startrow=5) df3.to_excel(writer, sheet_name='Sheet1', startrow=0,startcol=11) df3.to_excel(writer, sheet_name='Sheet1', startrow=0,startcol=18) df3.to_excel(writer, sheet_name='Sheet1', startrow=0,startcol=26)

It is also possible to write the dataframe without the header and index.

df4.to_excel(writer, sheet_name='Sheet1', startrow=7, startcol=4, header=False, index=False)

Close the Pandas Excel writer and output the Excel file.

writer.save()

def outer_function(): import xlrd wb=xlrd.open_workbook('C:/Users/bened/pandas_positioning.xlsx') sheet=wb.sheet_by_name('Sheet1')

for i in range(sheet.nrows):
    if(sheet.cell_value(i,0)=='Data3'):
            data=i
    d=0
    while(d<data):
        print('hi')
        break

outer_function()

how do i solve UnboundLocalError: local variable 'data' referenced before assignment

amitShindeGit commented 3 years ago

Hey,declare 'data' above if statement and initialize it with 0. Like this, data = 0 Because 'data' is inside if statement,the while statement couldn't access it. And it should solve the error.