如何在熊猫数据框中逐步填充缺少的时间戳?

时间:2020-05-26 10:40:01

标签: python pandas timestamp

我有一个熊猫数据框,其中缺少一些时间戳,这些时间戳以每分钟一分钟的间隔定期隔开,如下所示

df
time                  value
2020-03-04 17:00:00   -0.923
2020-03-04 17:01:00   -0.829
....

问题在于,在某些地方缺少time列(value列没有缺失值)。

2020-03-04 22:08:00  0.023
NaN                  0.039
NaN                  0.104
2020 03-04 22:11:00  0.192

如何在NaN列中向前填充time,以使它们正确地增加每一行的时间?使用上面的示例所需的输出看起来像

2020-03-04 22:08:00  0.023
2020-03-04 22:09:00  0.039
2020-03-04 22:10:00  0.104
2020 03-04 22:11:00  0.192

2 个答案:

答案 0 :(得分:2)

使用Series.interpolate转换为本机格式-Unix时间:

df['date'] = (pd.to_datetime(df['date'].dropna()
                                       .astype(np.int64)
                                       .reindex(df.index).interpolate()))
print (df)
                 date    col
0 2020-03-04 22:08:00  0.023
1 2020-03-04 22:09:00  0.039
2 2020-03-04 22:10:00  0.104
3 2020-03-04 22:11:00  0.192

答案 1 :(得分:1)

一种可能的方法是将数据转换为浮点数,插值并转换回:

# convert to datetime if not already is
df['time'] = pd.to_datetime(df['time'])

old_time = pd.to_datetime('1970-01-01')
interpolated = df['time'].sub(old_time).dt.total_seconds().interpolate()

df['time'] = pd.to_timedelta(interpolated, unit='s') + old_time

输出:

                 time  value
0 2020-03-04 22:08:00  0.023
1 2020-03-04 22:09:00  0.039
2 2020-03-04 22:10:00  0.104
3 2020-03-04 22:11:00  0.192