Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:插入日期时间_Python_Pandas_Datetime_Interpolation - Fatal编程技术网

Python:插入日期时间

Python:插入日期时间,python,pandas,datetime,interpolation,Python,Pandas,Datetime,Interpolation,假设我有以下数据帧: 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]=时间戳('2019-0

假设我有以下数据帧:

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]
=
时间戳('2019-05-23 15:40:17')

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


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

您可以将datetime列转换为其浮点表示形式(自1970-01-01以来的纳秒),对其进行插值,然后转换回datetime,例如

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())

您可以将datetime列强制转换为其浮点表示形式(自1970-01-01以来的纳秒数),对其进行插值,然后强制转换回datetime,例如

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())