我有这样的示例数据。
date time option_type open high low close volume
6031 9/27/2018 09:17 CE 11500 0.15 0.15 0.15 0.15 1500
6131 9/27/2018 15:19 CE 11500 0.05 0.05 0.05 0.05 1500
6132 9/27/2018 15:22 CE 11500 0.05 0.05 0.05 0.05 75
6133 9/27/2018 15:24 CE 11500 0.05 0.05 0.05 0.05 225
6134 9/27/2018 15:25 CE 11500 0.05 0.05 0.05 0.05 75
6135 9/27/2018 15:26 CE 11500 0.05 0.05 0.05 0.05 600
有些行在那边丢失了。例如09:15、09:16,然后15:20、15:21等。
在15:20/15:21的情况下,我想用前一行的值填充丢失的行,在09:15/09:16的情况下,我要用下一个可用的行填充。 09:17 值将用于09:15/09:16。 15:20 值将用于15:21/15:22。
请你帮我一下。预先感谢,感谢您的努力和时间。
答案 0 :(得分:1)
第1步:找出连续行的时间差:
df['deltaT'] = df.time.to_series().diff().dt.seconds.div(60, fill_value=0)
以上内容将为您提供一个新的列,列出了差异分钟数。在连续的行之间
第二步:根据新列deltaT
复制行
df.reindex(df.index.repeat(df.deltaT))
第3步:建立增加时间列的逻辑
df['time'] = pd.to_timedelta(df['time']) + pd.to_timedelta(df['deltaT'], unit='m')
仍然努力为您提供最后的帮助。
如果您觉得这有帮助,可以在此基础上继续发展。太好了!!
答案 1 :(得分:0)
我认为您正在寻找这样的东西:
df['time']=df['time'].fillna(method="ffill") #to carry the values forward
df['time']=df['time'].fillna(method="bfill") #to carry the values backwards
df