使用 Pandas 在两个日期之间进行插值
Interpolate between two times of a date using Pandas
我需要根据每天在不同时间测量的四次温度来插入 15:00:00 的温度。
下面是这两天的读数,可以看出每天的数据记录不是很均匀:
datetime temp_obs
2011-12-11 05:29:45 16.02
2011-12-11 11:28:19 15.79
2011-12-11 17:26:52 16.15
2011-12-11 23:25:26 16.71
2011-12-12 05:24:00 16.36
2011-12-12 11:22:33 16.02
2011-12-12 17:21:07 16.24
2011-12-12 23:19:40 16.63
如果有任何关于使用 Pandas 或任何其他工具对 15:00:00 处的值进行插值的建议,我将不胜感激。谢谢
您可以在两次之间进行切片并生成回归数据:
data = df[(df.index > start_date) & (df.index <= end_date)]
valuelist = data.values
time = data.index.total_seconds()
然后您可以使用 numpy 为数据拟合一条线
import numpy as np
# 1d line y= mx +c
m,c = np.polyfit(time, valuelist, 1)
并以秒为单位获得所需时间
from datetime import datetime
datetime_s = datetime.strptime('Jun 1 2005 3:00PM', '%b %d %Y %I:%M%p').strftime('%s')
# y = mx +c
result = m*datetime_s + c
我需要根据每天在不同时间测量的四次温度来插入 15:00:00 的温度。
下面是这两天的读数,可以看出每天的数据记录不是很均匀:
datetime temp_obs
2011-12-11 05:29:45 16.02
2011-12-11 11:28:19 15.79
2011-12-11 17:26:52 16.15
2011-12-11 23:25:26 16.71
2011-12-12 05:24:00 16.36
2011-12-12 11:22:33 16.02
2011-12-12 17:21:07 16.24
2011-12-12 23:19:40 16.63
如果有任何关于使用 Pandas 或任何其他工具对 15:00:00 处的值进行插值的建议,我将不胜感激。谢谢
您可以在两次之间进行切片并生成回归数据:
data = df[(df.index > start_date) & (df.index <= end_date)]
valuelist = data.values
time = data.index.total_seconds()
然后您可以使用 numpy 为数据拟合一条线
import numpy as np
# 1d line y= mx +c
m,c = np.polyfit(time, valuelist, 1)
并以秒为单位获得所需时间
from datetime import datetime
datetime_s = datetime.strptime('Jun 1 2005 3:00PM', '%b %d %Y %I:%M%p').strftime('%s')
# y = mx +c
result = m*datetime_s + c