【问题标题】:Datetime conversion issue pandas日期时间转换问题熊猫
【发布时间】:2018-12-07 14:43:07
【问题描述】:

我有一个 pandas 数据框,它在 python3 上的第一列类型为“datetime64[ns]”。 这是我的代码的 sn-p:

import pandas as pd
import numpy as np
from pandas.tseries.offsets import BDay
import datetime as dt

d = {'Date': [np.datetime64('2017-12-31','ns'), np.datetime64('2018-01-01','ns'), np.datetime64('2018-01-02','ns'), np.datetime64('2018-01-03','ns')], 
     'Prices': [9.62, 9.5, 9.73, 9.45]}
analytics = pd.DataFrame(data=d)
analytics['Date'] = pd.to_datetime(analytics['Date'], format='%Y-%m-%d')
Eyear = 2018
Emonth = 1
Eday = 3
###days
#last day
last = dt.datetime(Eyear, Emonth, Eday)
#1y
dtvar = dt.datetime(Eyear-1, Emonth, Eday)

yr1 = dtvar - BDay(1) if (dtvar.weekday() == 5 or dtvar.weekday() == 6) else dtvar
yr1_plus1 = yr1 + BDay(1)
yr1ct = len(analytics[yr1_plus1:last])

print(yr1ct)

我不断出现这个错误:

TypeError:无法使用“pandas._libs.tslib.Timestamp”类的这些索引器 [2017-01-02 00:00:00] 对“pandas.core.indexes.range.RangeIndex”类进行切片索引

我正在尝试查找一年前的第一个工作日,并查找这两个日期之间的工作日数。

我认为问题可能在于 DataFrame 具有一种时间格式,而对进一步操作“last”和“dtvar”最重要的变量是 datetime.datetime,我需要使用 .工作日()公式。 在这种情况下处理日期的最佳方法是什么? 因为我在 pandas、numpy 和 datetime 中看到了成千上万种不同的日期类型。我对python有点陌生,无论我多么努力,我都找不到出路。

非常感谢您的任何帮助,

【问题讨论】:

    标签: python-3.x pandas datetime timestamp weekday


    【解决方案1】:

    数据框没有被Date 列索引。切片前需要set_index

    >>> analytics.set_index("Date")[yr1_plus1:last]
    

    【讨论】:

      猜你喜欢
      • 2021-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-05
      • 2020-12-18
      • 2018-12-08
      相关资源
      最近更新 更多