2
Предположим, у меня есть разреженная DataFrame
, и я хочу, .fillna(method='ffill')
, но только на строки с одинаковой датой?Панды: DataFrame.fillna но только тот же день
Например, если df
имеет строки:
2017-01-01 12:00 0.6
2017-01-01 13:00 NaN
2017-01-02 12:00 NaN
2017-01-02 13:00 0.8
Тогда я хочу, чтобы заполнить вперед, чтобы произвести:
2017-01-01 12:00 0.6
2017-01-01 13:00 0.6
2017-01-02 12:00 NaN
2017-01-02 13:00 0.8
Вот код, чтобы создать редкую почасовой DataFrame для демонстрации:
df = pd.DataFrame(np.random.rand(76), columns=list('X'), index=pd.date_range('2016-01-01', freq='H', periods=76))
df.loc[df['X'] < 0.6, 'X'] = np.nan
Вы знаете, почему 'resample ('D'). Ffill()' не удается? – ayhan
@ayhan: Вы имеете в виду 'resample ('H')'? Не будет ли 'resample ('D')' downsample почасовые данные до ежедневного, так что это не будет действительно соответствовать? Из нескольких тестов я считаю, что 'resample ('H')' только форвард заполняется, если часы полностью отсутствуют. В этом случае все часы есть, некоторые просто имеют значение null. Я думаю, вам нужно сначала сбросить нули, чтобы он работал, что-то вроде 'df ['X'] = df ['X']. Dropna(). Resample ('H'). Ffill()'. – root
Я думал, что 'ffill' заставит его работать как' groupby.transform', но вы правы. Спасибо. – ayhan