Хорошо, я знаю, что мы уже нашли решение здесь, но только для того, чтобы удовлетворить ботаника во мне, вот ответ (не элегантно, учитывая, как долго это), чтобы избежать этого ноющего недостатка первого ряда
pd.merge(df, (df.groupby('date')['flag'].any().astype(int)).to_frame().T.transpose().reset_index(), left_on='date', right_on='date')
Подход остается таким же, как у @jezrael - здесь функция groupby является ключевой. Вместо использования cumsum, которая приводит к недостатку первого ряда, any()
, кажется, действительно хорошо вписывается в это решение. Единственным недостатком является то, что он создает серию, которую нам нужно затем вернуть обратно в кадр данных и транспонировать перед тем, как объединить их с помощью клавиши date .