Python Pandas: 插入日期时间

Python Pandas: interpolate datetimes

假设我有以下数据框:

df = pd.DataFrame({'values': {0: 5, 1: 6, 2: 7},
 'date': {0: pd.Timestamp('2019-05-23 15:39:45'),
  1: np.nan,
  2: pd.Timestamp('2019-05-23 15:40:49')}})

我如何简单地将缺失值归因于两个值之间的时间?在此示例中,该值将是:(df.date[2]-df.date[0])/2 + df.date[0] = Timestamp('2019-05-23 15:40:17')

我可以在不使用循环查找缺失值的情况下执行此操作吗?

我尝试将日期时间列转换为时间戳,进行插值,然后再转换回来。不幸的是,所有日期都转换不正确,我最终得到了 1970 年代的日期。

您可以将日期时间列转换为其浮点表示形式(自 1970 年 1 月 1 日以来的纳秒),对这些进行插值,然后转换回日期时间,例如

import pandas as pd
import numpy as np

df = pd.DataFrame({'values': {0: 5, 1: 6, 2: 7},
                   'date': {0: pd.Timestamp('2019-05-23 15:39:45'),
                            1: pd.Timestamp('NaT'),
                            2: pd.Timestamp('2019-05-23 15:40:49')}})

s = pd.Series(df['date'].values.astype(float))
s[s<0] = np.NaN

df['date'] = pd.to_datetime(s.interpolate())
df
   values                date
0       5 2019-05-23 15:39:45
1       6 2019-05-23 15:40:17
2       7 2019-05-23 15:40:49