вычитая среднее значение каждого столбца из столбца и возвращая его - PullRequest
0 голосов
/ 21 октября 2019

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

def exercise1(df):
    df1 = DataFrame(df)
    df2 = df1 - df1.mean()
    return df2

exercise1(data)

# Where data is the a csv file regarding salaries in the San Francisco area. 

Я получаю следующую ошибку

TypeError: ufunc 'subtract' did not contain a loop with signature matching types dtype('<U32') dtype('<U32') dtype('<U32')

Я не могу понять, что я делаю неправильно

Ответы [ 3 ]

1 голос
/ 21 октября 2019

df.mean () создает тип данных серии pandas с только числовыми столбцами из исходного DataFrame.

means = df.mean()

Вы можете получить значения индекса этой серии, используя:

means.index

Используйте это, чтобы нарезать ваш оригинальный DataFrame и вычесть среднее значение

df2 = df[means.index] - means
1 голос
/ 21 октября 2019

Вы можете сделать цикл for для столбца с помощью try-except:

def exercise1(df):
    df1 = df.copy()
    for col in df1.columns:
        try:     # if we can compute the mean then substract
            df1[col] -= df1[col].mean()
        except:  # otherwise just ignore the column
            pass

    return df1
0 голосов
/ 21 октября 2019

Вам необходимо указать столбец, из которого вычитаете:

df = {'values1': [1,2,3], 'values2': [4,5,6]}
def exercise1(df):
    df1 = pd.DataFrame(df)
    df2 = df1['values2'] - df1['values2'].mean()
    return df2

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