I have an excel file with 2 columns titled Lat and Lon with some data such as: Lat Lon 36.19553° N 95.90918° W 36.19550° N 95.93592° W 36.20277° N 95.94484° W 36.20277° N 95.95381° W 36.22436° N 95.98023° W 36.21005° N 95.94487° W 36.21006° N 95.93594° W 35.99968° N 96.09681° W 35.97043° N 95.98949° W 35.96317° N 95.98951° W 35.99968° N 96.11459° W 35.99967° N 96.10568° W 35.96318° N 95.99839° W 35.96315° N 96.00728° W 35.99239° N 96.13247° W I am trying to read in the excel file and group each one that is within a distance of 0.00004 in the last place of each other in either the lat or the lon column into a group. It should start with the first row and check each row looking for another one that is within a distance of 0.00004 and insert a number starting a one in a column called 'Drive' for each grouping. the expected output is supposed to be: Lat Lon Drive 0 36.19553 95.90918 1 1 36.19550 95.93592 1 2 36.20277 95.94484 2 3 36.20277 95.95381 2 4 36.22436 95.98023 3 5 36.21005 95.94487 2 6 36.21006 95.93594 1 7 35.99968 96.09681 4 8 35.97043 95.98949 5 9 35.96317 95.98951 5 10 35.99968 96.11459 4 11 35.99967 96.10568 4 12 35.96318 95.99839 5 13 35.96315 96.00728 5 14 35.99239 96.13247 6 I have made several attempt with no success. here is the latest attempt: # Read the data into a pandas DataFrame df = pd.read_excel('data.xlsx') # Convert Lat and Lon to absolute values for easy comparison df['Lat'] = df['Lat'].abs() df['Lon'] = df['Lon'].abs() # Initialize the counter and group column counter = 1 df['Drive'] = 0 # Loop over the DataFrame rows for i in range(len(df)): if df['Drive'] == 0: df.loc[(df['Lat'].between(df['Lat'] - 4, df['Lat'] + 4)) & (df['Lon'].between(df['Lon'] - 4, df['Lon'] + 4)), 'Drive'] = counter counter += 1 # Print the result print(df) I get the error bad operand type for abs(): 'str' Continue reading...