【问题标题】:How to convert a numeric column (without a calendar date) into datetime如何将数字列(没有日历日期)转换为日期时间
【发布时间】:2019-09-23 09:12:02
【问题描述】:

我正在处理 pandas df 中的时间序列数据,它没有真正的日历日期,但有一个索引值,表示每个值之间的时间间隔相等。我正在尝试将其转换为具有每日或每周频率的日期时间类型。有没有办法在更改类型时保持值相同(例如不设置实际日历日期)?

Index,Col1,Col2

1,6.5,0.7

2,6.2,0.3

3,0.4,2.1

【问题讨论】:

    标签: pandas datetime time-series


    【解决方案1】:

    pd.to_datetime 可以在给定时间单位相对于某个原点时创建日期。默认为 POSIX 源 1970-01-01 00:00:00 和时间(以纳秒为单位)。

    import pandas as pd
    
    df['date1'] = pd.to_datetime(df.index, unit='D', origin='2010-01-01')
    df['date2'] = pd.to_datetime(df.index, unit='W')
    

    输出:

    #       Col1  Col2      date1      date2
    #Index                                  
    #1       6.5   0.7 2010-01-02 1970-01-08
    #2       6.2   0.3 2010-01-03 1970-01-15
    #3       0.4   2.1 2010-01-04 1970-01-22
    

    或者,您可以将timedeltas 添加到指定的开始:

    pd.to_datetime('2010-01-01') + pd.to_timedelta(df.index, unit='D')
    

    或者将它们保留为timedelta:

    pd.to_timedelta(df.index, unit='D')
    #TimedeltaIndex(['1 days', '2 days', '3 days'], dtype='timedelta64[ns]', name='Index', freq=None)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-14
      • 2010-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-22
      • 2014-07-01
      相关资源
      最近更新 更多