У меня есть набор данных с 2111 строками. Когда я удаляю 27 повторяющихся строк, выходные данные DataFrame.info по-прежнему показывают строки с номерами от 0 до 2110, но сообщают о 2085 строках.
Есть ли команда обновления, связанная с метаданными DataFrame, которую мне нужно вызвать?
Исходный непредварительно обработанный вывод DataFrame.info:
!!!!!!!!!!!!!!!!!! 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]
После предварительной обработки из набора данных удаляется 27 повторяющихся строк (с 2111 строк до 2085). После удаления строки вывод DataFrames.info показывает:
!!!!!!!!!!!!!!!!!! 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]
ПРИМЕЧАНИЕ. В выводе информации отображается последняя строка с номером 2110, а строки — с номером 2084.
Я пробовал использовать DataFrame.dropduplications как с inplace=True, так и с inplace=False, но результат тот же:
#Example of inplace = False and inplace=True
return_df = return_df.drop_duplicates(inplace=False)
return_df.drop_duplicates(inplace=True)
Вот соответствующий код удаления строки:
# 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
🤔 А знаете ли вы, что...
Python используется в научных вычислениях и обработке изображений с использованием библиотеки OpenCV.
Строки удаляются правильно. Однако обратите внимание, что индекс не сбрасывается автоматически после удаления дубликатов. Вам нужно сбросить индекс, чтобы получить желаемый результат:
df.reset_index(drop=True, inplace=True)
Как уже упоминалось здесь, inplace=True
не рекомендуется.
Вместо этого используйте:
df = df.reset_index(drop=True)