Индекс не сбрасывается - PullRequest
       28

Индекс не сбрасывается

0 голосов
/ 21 сентября 2018

У меня есть понимание списка, и внутри него я вызываю функцию, передавая ей два аргумента.Внутри функции у меня есть другое понимание списка, которое дает мне список DataFrames.

Я должен очистить данные в каждом DataFrame, поэтому я использую цикл for, чтобы пройти через каждый DataFrame в списке.На каждой итерации я делаю все, что мне нужно, одна из вещей - сброс индекса каждого DataFrame.Я помещаю оператор печати за пределы функции, чтобы убедиться, что все получилось так, как мне нужно, но индексы не сбрасываются.Почему он не сбрасывается?

def function(xls, a_list):
    # a_list is a list of strings
    df_list = [pd.read_excel(xls, sheet_name=a) for a in a_list]

    for df in df_list:
        df.dropna(how='all', inplace=True)
        df['Meal'] = df['Meal'].fillna(method='ffill')

        # RIGHT HERE 
        df = df.reset_index(drop=True)

    return df_list

# ------------------------------------

list_of_df = [function(xls, monthly_sheets) for xls, monthly_sheets in zip(xls_files, sheet_names) if monthly_sheets]

Например, вот что я получаю:

        Col1        Col2
0        a            f
1        b            g
4        c            h
7        d            i
8        e            j

Что я хочу, это:

        Col1        Col2
0        a            f
1        b            g
2        c            h
3        d            i
4        e            j

Чего мне не хватает?

Заранее спасибо!

1 Ответ

0 голосов
/ 21 сентября 2018

Вместо

df = df.reset_index(drop=True)

Использование

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

Проблема в том, что df.reset_index() возвращает значение, если inplace равно False, ивы присвоили это значение df, но затем вы ничего не делаете с df.Вы работаете со списком фреймов данных, и этот список не включает в себя новый локальный df, который вы только что создали.

Другой альтернативой будет сохранение нового df в вашем df_list.Для меня это похоже на большую работу, поскольку pandas уже поддерживает аргументы на месте для большинства своих операций.

...