熊猫-使用日期范围填充数据框架

时间:2020-02-25 13:07:51

标签: python pandas datetime

假设这是我的df:

  Name1    Name2       date 
1 John     Jay   2015-01-01 06:01:00
2 Sara     Debra 2015-01-01 06:05:00
3 Ben      Beth  2015-01-01 06:09:00 

我想填写df,在其中每行都应重复并增加1分钟,直到到达下一行为止,因此输出应为:

  Name1    Name2       date 
1 John     Jay   2015-01-01 06:01:00
1 John     Jay   2015-01-01 06:02:00
1 John     Jay   2015-01-01 06:03:00
1 John     Jay   2015-01-01 06:04:00
2 Sara     Debra 2015-01-01 06:05:00
2 Sara     Debra 2015-01-01 06:06:00
3 Ben      Beth  2015-01-01 06:07:00 

我研究了date_range,但是没有找到一个丑陋且效率低下的for循环,找不到合适的方法。

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:2)

如果所有日期时间都是唯一的,则可以使用DataFrame.asfreq

df['date'] = pd.to_datetime(df['date'])

df1 = (df.set_index('date')
         .asfreq('Min', method='ffill')
         .reset_index().reindex(df.columns, axis=1))

对我来说,DataFrame.resampleDatetimeIndexResampler.ffill一起使用的解决方案:

df1 = df.set_index('date').resample('1Min').ffill().reset_index().reindex(df.columns, axis=1)

print (df1)
  Name1  Name2                date
0  John    Jay 2015-01-01 06:01:00
1  John    Jay 2015-01-01 06:02:00
2  John    Jay 2015-01-01 06:03:00
3  John    Jay 2015-01-01 06:04:00
4  Sara  Debra 2015-01-01 06:05:00
5  Sara  Debra 2015-01-01 06:06:00
6  Sara  Debra 2015-01-01 06:07:00
7  Sara  Debra 2015-01-01 06:08:00
8   Ben   Beth 2015-01-01 06:09:00

答案 1 :(得分:2)

尝试一下:

df.resample('60S', on='date').pad()

这是一个简单的上采样,然后用pad()来填充缺失值的情况。