我将数据分组如下: 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})
答案 0 :(得分:0)
您可以将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