I have created a python function which contains a for loop combined with if statements to iterate over each element in an array to find the word 'Urban' contained within the string and returns a positive index if found, otherwise returns -1 should the value not exist within the string. Below is an example of the output:
abc = np.array(crew_data['Vegetation Area'])
print(abc)
-1
2
-1
10
10
10
Following this the loop proceeds to execute the following if statements:
if abc == -1:
abc = str('Rural')
elif abc != -1:
abc != str('Urban')
return(abc)
What is happening here is, based on the results of the array iteration, any result returning the value -1 is assigned the string value 'Rural', and anything not equal to -1 is assigned the string value of 'Urban. Below is the result when printed:
print(abc)
Rural
Urban
Rural
Urban
Urban
Urban
As the example demonstrates, the function when called performs the loop and if statements, and returns the result as required, however when this function is called within another for loop the results change and it appears that the loop (in question) continues to reiterate and produces the incorrect result. Initially I thought it could have been contributed to using the same iterator of i which is used in the later for loop, so I changed the iterator value to x, and nothing has changed.
Note that the later for loop mentioned (code not shown) calls on a number of different functions without a problem, however, this is the only function which contains a for loop.
Are there any additional controls that need to be integrated into the function that will allow it to correctly execute within the later for loop?
FYI, below is the function code referenced in this question:
def area_type():
abc= np.array(crew_data['Vegetation Area'])
for x in abc:
abc = x.find('Urban')
if abc == -1:
abc = str('Rural')
elif abc != -1:
abc = str('Urban')
return abc
Below is the output of the original array before the value has been converted:
'V-Wellington 906' 'V-Wellington 906' 'V-Urban Narromine 530_1'
'V-Tumbarumba - 78545 - Taradale' 'V-Tumut - Urban Batlow'
'V-Tumut - Urban Batlow' 'V-Tumut - Urban Batlow'
'V-Tumut - Urban Batlow' 'V-Tumut - Urban Batlow'
'V-Tumut - Urban Batlow' 'V-Tumut - Urban Batlow'
'V-Tumbarumba - 78540 +78547 - Laurel Hill'
'V-Tumbarumba - 78540 +78547 - Laurel Hill'
'V-Tumbarumba - 78540 +78547 - Laurel Hill'
'V-Tumbarumba - 78540 +78547 - Laurel Hill'
'V-Tumbarumba - 78540 +78547 - Laurel Hill'
'V-Tumbarumba - 78540 +78547 - Laurel Hill'
'V-Tumbarumba - 78540 +78547 - Laurel Hill'
'V-Tumbarumba - 78540 +78547 - Laurel Hill'
'V-Tumbarumba - 78540 +78547 - Laurel Hill'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 3'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 3'
'V-Tumbarumba - 78540 +78547 - Laurel Hill'
'V-Tumbarumba - 78540 +78547 - Laurel Hill'
'V-Tumbarumba - 78540 +78547 - Laurel Hill'
'V-Tumbarumba - 78540 +78547 - Laurel Hill'
'V-Tumbarumba - 78540 +78547 - Laurel Hill'
'V-Tumbarumba - 78540 +78547 - Laurel Hill'
'V-Tumbarumba - 78540 +78547 - Laurel Hill'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 1'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 1'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 1'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 1'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 1'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 1'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 1'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 1'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 1'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 1'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 1'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 1'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 1'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 1'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 1'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 1'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 1'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 1'
'V-Tumut - 78245+78244+78240 - Back Kunama' 'V-Tumut - Urban Batlow'
'V-Tumut - Urban Batlow' 'V-Tumut - Urban Batlow'
'V-Tumbarumba - 78510 + 78513 - Ournie Feeder B'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 1'
'V-Tumut - 78245+78244+78240 - Back Kunama'
'V-Tumbarumba - 78540 +78547 - Laurel Hill'
'V-Tumbarumba - 78540 +78547 - Laurel Hill'
'V-Tumbarumba - 78540 +78547 - Laurel Hill'
'V-Tumbarumba - 78510 + 78513 - Ournie Feeder B'
'V-Tumbarumba - 78510 + 78513 - Ournie Feeder B'
'V-Tumbarumba - 78510 + 78513 - Ournie Feeder B'
'V-Tumbarumba - 78510 + 78513 - Ournie Feeder B'
'V-Tumbarumba - 78510 - Ournie Feeder C'
'V-Tumbarumba - 78510 + 78513 - Ournie Feeder B'
'V-Tumbarumba - 78510 + 78513 - Ournie Feeder B'
'V-Tumbarumba - 78510 - Ournie Feeder C'
'V-Tumbarumba - 78510 + 78513 - Ournie Feeder B'
'V-Tumbarumba - 78510 + 78513 - Ournie Feeder B'
'V-Tumbarumba - 78510 - Ournie Feeder C'
'V-Tumbarumba - 78510 + 78513 - Ournie Feeder B'
'V-Tumbarumba - 78510 + 78513 - Ournie Feeder B'
'V-Tumbarumba - 78510 + 78513 - Ournie Feeder B'
'V-Tumbarumba - 78510 + 78513 - Ournie Feeder B'
'V-Tumbarumba - 78510 + 78513 - Ournie Feeder B'
'V-Tumut - 78245+78244+78240 - Back Kunama'
'V-Tumut - 78245+78244+78240 - Back Kunama'
'V-Tumbarumba - 78510 + 78513 - Ournie Feeder B'
'V-Tumut - 78245+78244+78240 - Back Kunama'
'V-Tumbarumba - 78510 - Ournie Feeder C'
'V-Tumbarumba - 78510 + 78513 - Ournie Feeder B'
'V-Tumut - 78245+78244+78240 - Back Kunama'
'V-Tumbarumba - 78510 + 78513 - Ournie Feeder B'
'V-Tumbarumba - 78510 + 78513 - Ournie Feeder B'
'V-Tumbarumba - 78510 + 78513 - Ournie Feeder B'
'V-Tumbarumba - 78514 - Jingellic' 'V-Tumbarumba - 78514 - Jingellic'
'V-Tumbarumba - 78510 + 78513 - Ournie Feeder B'
'V-Tumbarumba - 78510 + 78513 - Ournie Feeder B'
'V-Tumbarumba - 78510 + 78513 - Ournie Feeder B'
'V-Tumbarumba - 78514 - Jingellic' 'V-Tumbarumba - 78514 - Jingellic'
'V-Tumbarumba - 78510 + 78513 - Ournie Feeder B'
'V-Tumbarumba - 78510 + 78513 - Ournie Feeder B'
'V-Tumbarumba - 78510 + 78513 - Ournie Feeder B'
'V-Tumbarumba - 78510 + 78513 - Ournie Feeder B'
'V-Tumbarumba - 78514 - Jingellic'
'V-Tumbarumba - 78510 + 78513 - Ournie Feeder B' 'V-Tumut - Urban Batlow'
'V-Tumut - Urban Batlow' 'V-Tumbarumba - 78520 + 78521 - Tooma Part 2'
'V-Tumbarumba - 78540 +78547 - Laurel Hill'
'V-Tumbarumba - 78540 +78547 - Laurel Hill'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 1'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 1'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 1'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 1'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 1'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 1'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 1'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 1'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 1'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 1'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 1'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 1'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 1'
'V-Tumbarumba - 78540 +78547 - Laurel Hill'
'V-Tumbarumba - 78540 +78547 - Laurel Hill'
'V-Tumbarumba - 78540 +78547 - Laurel Hill'
'V-Tumbarumba - 78540 +78547 - Laurel Hill'
'V-Tumbarumba - 78540 +78547 - Laurel Hill'
'V-Tumbarumba - 78540 +78547 - Laurel Hill'
'V-Tumbarumba - 78540 +78547 - Laurel Hill'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 1'
'V-Tumbarumba - 78540 +78547 - Laurel Hill'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 1'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 1'
'V-Tumbarumba - 78520 + 78521 - Tooma Part 1'
'V-Tumut - 78316 - Talbingo' 'V-Tumut - Urban Talbingo'
'V-Tumut - 78316 - Talbingo' 'V-Tumut - 78316 - Talbingo'
'V-Tumut - 78316 - Talbingo' 'V-Tumut - 78316 - Talbingo'
'V-Tumut - 78316 - Talbingo'
'V-Gundagai - 78440+78442+78444 - Tumblong Part 2'
'V-Gundagai - 78440+78442+78444 - Tumblong Part 2'
'V-Gundagai - 78440+78442+78444 - Tumblong Part 2'
'V-Gundagai - 78440+78442+78444 - Tumblong Part 2'
'V-Tumbarumba - 78510+78511+78512 - Ournie Feeder A'
'V-Tumbarumba - 78510+78511+78512 - Ournie Feeder A']
This array is extracted from a column of the imported csv file which is stored as a pandas DataFrame. The function presented in this post is required to iterate through that array, search for the word urban, return an index or boolean, convert that value to either Urban or Rural, then be returned and called upon in a later loop to populate the range in the empty dataframe which will then be exported as a csv ready to be imported into another database.