Модифицируйте pandas dataframe из функции - PullRequest
0 голосов
/ 09 апреля 2019

Я снова и снова пытаюсь изменить несколько фреймов данных с помощью одних и тех же операций.Я хотел бы поместить все модификации в функцию и просто вызвать функцию с именем информационного кадра и выполнить все преобразования.

Это код и все преобразования, которые я сейчас пытаюсь применить.Когда я запускаю его, ничего не происходит, и информационный кадр остается необработанным.

#create a preprocessing formula so the process can be applied to any dataset (traning and validation and competition)
def preprocessing(df):
    #inspect dataframe
    df.head()

    #check data types in dataframe
    np.unique(df.dtypes).tolist()

    #inspect shape before removing duplicates
    df.shape

    #drop duplicates
    df = df.drop_duplicates()

    #inspect shape again to see change
    df.shape

    #calculate rows that have a mean of 100 to remove them later
    mean100_rows = [i for i in range(len(df)) if df.iloc[i,0:520].values.mean() == 100 ]

    #calculate columns that have a mean of 100 to remove them later
    mean100_cols = [i for i in np.arange(0,520,1) if df.iloc[:,i].values.mean() == 100 ]

    #calculate columns labels that have a mean of 100 to remove them later
    col_labels = [df.columns[i] for i in mean100_cols]

    #delete rows with mean 100
    df.drop(index = mean100_rows, axis=0, inplace=True)

    #delete columns with mean 100
    df.drop(columns=col_labels, axis=1, inplace=True)

    #export columns that have been removed
    pd.Series(col_labels).to_csv('remove_cols.csv')

    #head
    df.head()

    #check size again
    df.shape

1 Ответ

1 голос
/ 09 апреля 2019

В объектах Python, переданных функциям по ссылке.

Когда выполняется следующая строка

df = df.drop_duplicates()

Вы в основном назначаете новую ссылку на параметр функции, но объект вне функции не делаетизменить.

Я бы предложил изменить функцию, чтобы она возвращала объект df, а затем присваивала свое возвращаемое значение объекту df вне функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...