前填充熊猫DataFrame有条件的时间

时间:2019-10-02 11:09:59

标签: python pandas

我的每日数据如下:

daily_index = pd.date_range(start='1/1/2015', end='1/01/2018', freq='D')
random_values = np.random.randint(1, 3,size=(len(daily_index), 1))
daily_df = pd.DataFrame(random_values, index=daily_index, columns=['A']).replace(1, np.nan)

我想将每个值映射到一个数据框,在该数据框中将每天扩展为多个1分钟间隔。最终的DF看起来像这样:

intraday_index = pd.date_range(start='1/1/2015', end='1/01/2018', freq='1min')
intraday_df_full = daily_df.reindex(intraday_index)
# Choose random indices.
drop_indices = np.random.choice(intraday_df_full.index, 5000, replace=False)
intraday_df = intraday_df_full.drop(drop_indices)

在最后一个数据框中,每天分为1分钟间隔,但是有些间隔丢失了(因此每天的分钟数不相同)。某些日子在一天的开始具有价值,而其余的时间是nan

我的问题是,仅对于在第一分钟开始具有一定价值的日子,我该如何在剩下的日子里提前补货?

我最初尝试简单地执行以下daily_df.reindex(intraday_index, method='ffill', limit=1440),但是由于缺少某些行,因此无法正常工作。也许有办法限制时间?

1 个答案:

答案 0 :(得分:1)

在@Datanovice的注释之后,此行可实现所需的结果:

intraday_df.groupby(intraday_df.index.date).transform('ffill')

其中groupby定义了我们要在其上应用操作的所需组,而transform执行此操作时无需修改DataFrame的索引。