Question: I have a dataset with 2111 rows in it. When I drop the 27 duplicate rows the DataFrame.info output still shows the rows numbered from 0 to 2110, but reports 2085 rows. Is there a refresh command associated with DataFrame metadata I need to call? Original unpreprocessed DataFrame.info output:  !!!!!!!!!!!!!!!!!! Size and shape and info before preprocess 40109 (2111, 19) <bound method DataFrame.info of id Gender Age Height Weight ... TUE CALC MTRANS NObeyesdad BMI 0 1 female 21 1.6200 64 ... 3 to 5 no public_transportation normal_weight 24.3865 1 2 female 21 1.5200 56 ... 0 to 2 sometimes public_transportation normal_weight 24.2382 2 3 male 23 1.8000 77 ... 3 to 5 frequently public_transportation normal_weight 23.7654 3 4 male 27 1.8000 87 ... 0 to 2 frequently walking overweight_level_i 26.8519 4 5 male 22 1.7800 90 ... 0 to 2 sometimes public_transportation overweight_level_ii 28.3424 ... ... ... ... ... ... ... ... ... ... ... ... 2106 2,107 female 21 1.7107 131 ... 3 to 5 sometimes public_transportation obesity_type_iii 44.9015 2107 2,108 female 22 1.7486 134 ... 3 to 5 sometimes public_transportation obesity_type_iii 43.7419 2108 2,109 female 23 1.7522 134 ... 3 to 5 sometimes public_transportation obesity_type_iii 43.5438 2109 2,110 female 24 1.7394 133 ... 3 to 5 sometimes public_transportation obesity_type_iii 44.0715 2110 2,111 female 24 1.7388 133 ... 3 to 5 sometimes public_transportation obesity_type_iii 44.1443 [2111 rows x 19 columns]  After preprocessing drops 27 duplicate rows from a dataset (going from 2111 rows to 2085). Post row dropping, DataFrames.info output shows:  !!!!!!!!!!!!!!!!!! Size and shape After preprocess 37512 (2084, 18) <bound method DataFrame.info of Gender Age Height Weight FHWO FAVC FCVC NCP CAEC SMOKE CH2O SCC FAF TUE CALC MTRANS NObeyesdad BMI 0 2 21 1.6200 64 2 1 2 3 2 1 2 1 1 2 1 3 2 24.3865 1 2 21 1.5200 56 2 1 3 3 2 2 3 2 4 1 2 3 2 24.2382 2 1 23 1.8000 77 2 1 2 3 2 1 2 1 3 2 3 3 2 23.7654 3 1 27 1.8000 87 1 1 3 3 2 1 2 1 3 1 3 5 3 26.8519 4 1 22 1.7800 90 1 1 2 1 2 1 2 1 1 1 2 3 4 28.3424 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 2106 2 21 1.7107 131 2 2 3 3 2 1 2 1 3 2 2 3 7 44.9015 2107 2 22 1.7486 134 2 2 3 3 2 1 2 1 2 2 2 3 7 43.7419 2108 2 23 1.7522 134 2 2 3 3 2 1 2 1 2 2 2 3 7 43.5438 2109 2 24 1.7394 133 2 2 3 3 2 1 3 1 2 2 2 3 7 44.0715 2110 2 24 1.7388 133 2 2 3 3 2 1 3 1 2 2 2 3 7 44.1443 [2084 rows x 18 columns]  NOTE: the info output shows the last row numbered 2110, but rows as 2084. I've tried using DataFrame.dropduplicates with both inplace=True and inplace=False, but the result is the same: #Example of inplace = False and inplace=True return_df = return_df.drop_duplicates(inplace=False) return_df.drop_duplicates(inplace=True)  Here's the relevant row dropping code:  # removing duplicates count_dup = return_df.duplicated().sum() if (verbose > 0): print (f"Number of Duplicates : {count_dup}") if count_dup > 0: if (verbose > 0): print ("Dropping Duplicates") #return_df.drop_duplicates(inplace=True) return_df = return_df.drop_duplicates(inplace=False) else: if (verbose > 0): print ("No duplicates found.") return return_df 

Answer: The rows are being dropped correctly. However please note that the index won't automatically reset after dropping the duplicates. You need to reset the index to get your desired output: df.reset_index(drop=True, inplace=True)