Вывод Python DataFrame.info не отражает удаленные строки

У меня есть набор данных с 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.


2
66
2

Ответы:

Решено

Строки удаляются правильно. Однако обратите внимание, что индекс не сбрасывается автоматически после удаления дубликатов. Вам нужно сбросить индекс, чтобы получить желаемый результат:

df.reset_index(drop=True, inplace=True)


Как уже упоминалось здесь, inplace=True не рекомендуется.

Вместо этого используйте:

df = df.reset_index(drop=True)