Python 在其他两个datetime元素之间添加datetime元素

Python 在其他两个datetime元素之间添加datetime元素,python,pandas,datetime,Python,Pandas,Datetime,我的df采样率有点低。我想在值列中插入NaN值。我的问题是“ts”列。我的样本不是均匀分布的,我很难尝试使用timedelta在样本之间创建“ts”值 例如,df.head(4): 我试着循环并这样做: a= PS157['ts'].iloc[i] b= PS157['ts'].iloc[i+2] c= (b-a).total_seconds() d= c/2.0 PS157['ts'].iloc[i+1]= PS157['ts'].iloc[i] + np.timedelta64(d, 's'

我的df采样率有点低。我想在值列中插入NaN值。我的问题是“ts”列。我的样本不是均匀分布的,我很难尝试使用timedelta在样本之间创建“ts”值

例如,df.head(4):

我试着循环并这样做:

a= PS157['ts'].iloc[i]
b= PS157['ts'].iloc[i+2]
c= (b-a).total_seconds()
d= c/2.0
PS157['ts'].iloc[i+1]= PS157['ts'].iloc[i] + np.timedelta64(d, 's')
但这导致:

ValueError: Could not convert object to NumPy timedelta
我首先尝试使用0值,但dtypes说“ts”列是object,而不是dateime64。因此,我为所有零创建了一个通用的“ts”值,并运行pd.to_datetime。dyptes然后说dateime64,但我仍然得到“无法将对象转换为NumPy timedelta”

我在某个地方读到你不能插入日期时间,所以我想我必须用这个解决方法来解决它,但运气不好


有什么好办法解决这个问题吗?谢谢

错误很简单,只需将正确的参数传递给构造函数即可。文档指定“跨度的长度是一个64位整数乘以日期或单位长度的范围。”您在需要整数的地方给了它一个浮点

或者查看灵感来源,我们注意到它可以采用整数或datetime对象:

class timedelta64(generic):
    def __init__(
        self,
        __value: Union[None, int, _CharLike, dt.timedelta, timedelta64] = ...,
        __format: Union[_CharLike, Tuple[_CharLike, _IntLike]] = ...,
    ) -> None: ...
由于您的数据有接近毫秒的数据,因此我将使用:

import numpy as np
seconds = (31.918000 - 20.917000) / 2.0
np_diff1 = np.timedelta64(int(seconds * 1000000), 'ms')
这里是datetime.timedelta,它接受浮点:

import numpy as np
from datetime import timedelta
seconds = (31.918000 - 20.917000) / 2.0
np_diff2 = np.timedelta64(timedelta(seconds=seconds))

试着自己创建一个“np.timedelta64”,来解决细节问题。看起来您需要一个整数,尽管它可以是微秒或更小的整数。请发布
df.info()
import numpy as np
from datetime import timedelta
seconds = (31.918000 - 20.917000) / 2.0
np_diff2 = np.timedelta64(timedelta(seconds=seconds))