Панды заменяют негативы средними по категориям - PullRequest
0 голосов
/ 04 декабря 2018

Я хотел бы заменить все отрицательные значения из моего столбца на среднее значение по категории.Я могу легко найти среднее значение для каждой категории.Это похоже на train_df1.groupby(train_df1['item_category'])['item_cnt_day'].mean().

    item_category
Access            1.115664
Books             1.087056
CD                2.199036
CD games          1.361757
Card              1.421528
Consoles          1.298143
Consoles Games    1.242093
Delivery          8.261742
Phone games       1.232323
Name: item_cnt_day, dtype: float64

Также у меня есть некоторые отрицательные значения в столбце 'item_cnt_day' (что невозможно, так как трудно продать отрицательное количество молока или чего-то еще).И моя «идея» состоит в том, чтобы заменить отрицательные значения из категории 'Books' на среднее значение на 'Books', 'Consoles' на среднее значение на 'Consoles' и так далее.На самом деле, я не знаю, лучше ли считать среднее с этими отрицательными значениями или нет ...

Не могли бы вы мне помочь.Это панды. Кстати, дата:)

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Лучший способ думать об этом, это отрицательные числа на.Итак, давайте сделаем это:

train_df1[train_df1 < 0] = np.nan

Теперь давайте создадим новый столбец со средним по категории:

grouped = train_df1.groupby('item_category')['item_cnt_day'].mean()

Создайте новый столбец со средним по категории:

train_df1['category_mean'] = train_df1.merge(grouped, left_on='item_category', right_index=True)

Теперь заполните значения na:

train_df1.item_cnt_day.fillna(train_df1.category_mean)
0 голосов
/ 04 декабря 2018

Вы можете использовать .transform, чтобы добавить средние значения в виде столбца в DataFrame:

train_df1["groupby_mean"] = train_df1.groupby(train_df1['item_category'])['item_cnt_day'].transform("mean")

И затем использовать numpy's where, чтобы применить условия:

train_df1["item_cnt_day"] = np.where(train_df1["item_cnt_day"]>=0, train_df1["item_cnt_day"], train_df1["groupby_mean"])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...