Skip to content
Advertisement

Python pandas conditional ffill. Fill the month beginning value till that month’s end

The code below produces sample dataframe

import pandas as pd
import numpy as np
from datetime import datetime, timedelta

date_today = datetime.now()
days = pd.date_range(date_today, date_today + timedelta(35), freq='D')

np.random.seed(seed=1111)
data = np.random.randint(1, high=100, size=len(days))
df = pd.DataFrame({'test': days, 'col2': data})
df = df.set_index('test')

The value on 1st of December is as follows

df.loc['2021-12-01 22:59:41.332749']

Which outputs 9 My question is how to use “ffill” method to have this value 9 for all days of December? I want the month beginning value to be filled till end of that month

Advertisement

Answer

Replace values for all days except the first day of the month with NaNs and use .ffill()

df.loc[df.index.day != 1, 'col2'] = np.nan
df['col2'] = df['col2'].ffill()
Advertisement