Сравнить значение с предыдущим значением после группировки по функции - PullRequest
0 голосов
/ 15 ноября 2018

Я сгруппировал свои данные следующим образом: df1 = df.groupby (['Store', 'Region', 'Item'])

STORE  REGION  
Store1 West  Item price result
               1  1.00     0
               2  2.00     0
               3  2.00     0
                  2.50     1
               4  1.00     0
                  1.00     0
                   .50     1
                  1.00     1

В основном я хочу указать, была ли ценаизменить на 1 и 0, если цены не меняются.Если за единицу товара указана только одна цена, то я хочу, чтобы в этих случаях также возвращался 0.

Я пробовал это с кодом ниже, но это не удалось:

data_cleaned.groupby(['STORE', 'REGION', 'Item'])['price'].apply(lambda x: 1 if x == x.change.shift(1) else 0})

1 Ответ

0 голосов
/ 15 ноября 2018

Вы можете использовать groupby с diff.Вот демо:

df = pd.DataFrame({'Item': [1, 2, 3, 3, 4, 4, 4, 4],
                   'price': [1, 2, 2, 2.5, 1, 1, 0.5, 1]})

df = df.set_index('Item')

df['change'] = df.groupby(level=0)['price'].diff().abs().gt(0).astype(int)

print(df)

      price  change
Item               
1       1.0       0
2       2.0       0
3       2.0       0
3       2.5       1
4       1.0       0
4       1.0       0
4       0.5       1
4       1.0       1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...