【问题标题】:Pandas DatetimeIndex and to_datetime discrepancies when calculate (format) the same datePandas DatetimeIndex 和 to_datetime 计算(格式化)相同日期时的差异
【发布时间】:2019-01-23 09:49:38
【问题描述】:

我有一个简单的任务是创建连续的日子并对其进行一些计算。

我是用:

date = pd.DatetimeIndex(start='2019-01-01', end='2019-01-10',freq='D')
df = pd.DataFrame([date, date.week, date.dayofweek], index=['Date','Week', 'DOW']).T
df

现在我想使用以下方法从星期和星期几计算日期:

df['Date2'] = pd.to_datetime('2019' + df['Week'].map(str) + df['DOW'].map(str), format='%Y%W%w')

我得到的结果是:

据我了解,DatetimeIndex 有一种不同的计算周数的方法,因为 1stJan2019 应该是 Week=0 和 dow=2,这是我尝试运行代码的时候:pd.to_datetime('201902', format='%Y%W%w')Timestamp('2019-01-01 00:00:00')

herehere 提出了类似的问题,但两者的差异来自不同的时区,在这里我不使用它们。

感谢您的帮助!

【问题讨论】:

标签: python python-3.x pandas datetime


【解决方案1】:

根据文档https://github.com/d3/d3-time-format#api-reference, 看起来 %W 是基于星期一的一周,而 %w 是基于星期日的工作日。

我运行下面的代码来得到预期的结果:

date = pd.DatetimeIndex(start='2019-01-01', end='2019-01-10',freq='D')
df = pd.DataFrame([date, date.week, date.weekday_name, date.dayofweek], index=['Date','Week', 'Weekday', 'DOW']).T
df['Week'] = df['Week'] - 1
df['Date2'] = pd.to_datetime('2019' + df['Week'].map(str) + df['Weekday'].map(str), format='%Y%W%A', box=True)

注意2018-12-31是2019年的第一周

                   Date Week    Weekday DOW      Date2
0   2018-12-31 00:00:00    0     Monday   0 2018-12-31

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    • 2018-10-06
    • 2021-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多