df = df.sort_values(by=['store_nbr', 'product_sku', 'date']) df['price_change'] = df.groupby(['store_nbr', 'product_sku'])['retail'].apply(lambda x: x != x.shift()).values df['date_price_change'] = df['date'].where(df['price_change']).ffill()