带有pandas时间戳的DateOffset给出错误

时间:2016-01-28 15:30:23

标签: python pandas timestamp

我创建了一个DataFrame,其中包含一个日期时间和一列,表示自从我定义为1900年1月1日00:00之后的'epoch'以来所代表的分钟数。我只对这里的分钟级精度感兴趣。

    from pandas.tseries.offsets import *

    df = pd.DataFrame([pd.Timestamp('1900-01-01 00:00:00.000000'),
              pd.Timestamp('1900-01-01 00:01:00.000000'),
              pd.Timestamp('1900-01-01 00:02:00.000000'),],
              columns=['datetimeinput'])

这个功能正常,功能

    def MinsSince1900(dt):
        epoch = pd.Timestamp('1900-01-01 00:00:00.000000')
        elapsedmins = (dt - epoch).astype('timedelta64[m]')
        return elapsedmins

我可以将列时间键恢复为自纪元以来的0,1,2分钟,其中:

    df.loc[:,'timekey']= MinsSince1900(df['datetimeinput']) 

但是,当我尝试撤消此过程并将时间键转换回时间时,使用以下函数:

    def CreateTimefromKey(t):
        x=pd.Timestamp('1900-01-01 00:00:00.000000') + DateOffset(minutes=t)
        y = x.to_datetime()
        return y

我收到错误消息

    TypeError: unsupported type for timedelta minutes component: Series

我显然在做错误,时间戳和系列错误。但我认为如果它以某种方式工作,我可以扭转这个过程。

如果有人能够指出我哪里出错了,我将非常感激,谢谢

1 个答案:

答案 0 :(得分:1)

您可以在timedelta64[ns](Pandas时间戳)中添加一系列epoch

import pandas as pd
df = pd.DataFrame([pd.Timestamp('1900-01-01 00:00:00.000000'),
          pd.Timestamp('1900-01-01 00:01:00.000000'),
          pd.Timestamp('1900-01-01 00:02:00.000000'),],
          columns=['datetimeinput'])
epoch = pd.Timestamp('1900-01-01 00:00:00.000000')
df['timekey'] = (df['datetimeinput'] - epoch) / pd.Timedelta(minutes=1)
df['date'] = pd.to_timedelta(df['timekey'], unit='m') + epoch

产量

        datetimeinput  timekey                date
0 1900-01-01 00:00:00        0 1900-01-01 00:00:00
1 1900-01-01 00:01:00        1 1900-01-01 00:01:00
2 1900-01-01 00:02:00        2 1900-01-01 00:02:00