设置如下:
我有两个(整数索引)列,start
和{start
有时间戳(其内部类型是np.datetime64[ns]
),而{
我希望快速生成一列,该列由start
中的每个datetime组成,偏移量为month_delta
中相应的月数。我该怎么做?在
我尝试过但没用的方法:
apply
太慢。在DateOffset
对象添加到一系列datetime64[ns]
数据类型(或DatetimeIndex
)中。在timedelta64
对象;Pandas会自动地将基于月的时间增量转换为基于纳秒的时间增量,这些时间增量大约为30天。(哎呀!没有默默地失败会怎么样?)在目前,我正在迭代month_delta
的所有不同值,并对我创建的DatetimeIndex
的相关部分执行tshift
操作,但这是一个非常糟糕的代码:
new_dates = pd.Series(pd.Timestamp.now(), index=start.index)
date_index = pd.DatetimeIndex(start)
for i in xrange(month_delta.max()):
mask = (month_delta == i)
cur_dates = pd.Series(index=date_index[mask]).tshift(i, freq='M').index
new_dates[mask] = cur_dates
恶心!有什么建议吗?在
下面是一种方法(通过使用timedelta64s添加NumPy datetime64s),而不调用
apply
:收益率
^{2}$如果不使用
apply
进行安装,我无法找到一种方法,但假设可以:请注意,您必须使用}模块或{}模块。既然你只是用应用程序创建delta,我希望你能体验一下加速。在
datetime
模块中的datetime
,而不是{我想这样的方法可能会奏效:
也许有更好的方法来创建一系列
DateOffset
对象并以某种方式添加它,但是idk。。。在相关问题 更多 >
编程相关推荐