如何在熊猫python中使用上一行或下一行填充缺少的行

时间:2018-12-07 19:06:09

标签: python pandas

我有这样的示例数据。

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。

请你帮我一下。预先感谢,感谢您的努力和时间。

2 个答案:

答案 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