【问题标题】:Pandas: European style date_range熊猫:欧式 date_range
【发布时间】:2016-07-25 10:40:56
【问题描述】:

我正在尝试以欧洲风格生成date_range dd/mm/yyyy

import pandas as pd

rng = pd.date_range(start = '1/09/2016', periods = 10, dayfirst = True)

输出如下:

DatetimeIndex(['2016-01-09', '2016-01-10', '2016-01-11', '2016-01-12',
           '2016-01-13', '2016-01-14', '2016-01-15', '2016-01-16',
           '2016-01-17', '2016-01-18'],
          dtype='datetime64[ns]', freq='D')

没有dayfirst 参数,我得到相同的输出。

我做错了什么?

【问题讨论】:

  • 没什么,显示的格式将是你当前环境的显示格式,我不认为dayfirstkwarg,如果你想要不同的输出格式你需要做@987654328 @ 但这会给你字符串而不是日期时间
  • 那么就没有其他方法可以生成欧洲格式的日期了吗?
  • 不,因为您创建的是datetimes 的数组,显示格式是完全不同的东西,为了您的方便,底层类型是在执行算术运算时理解的,实际上是显示格式当您在绘图中打印或显示时很重要

标签: python python-2.7 pandas date-range


【解决方案1】:

你只能使用DatetimeIndex.strftime,但丢失DatetimeIndex并得到liststrings

print (rng.strftime('%d/%m/%Y'))
['09/01/2016' '10/01/2016' '11/01/2016' '12/01/2016' '13/01/2016'
 '14/01/2016' '15/01/2016' '16/01/2016' '17/01/2016' '18/01/2016']

通过评论编辑:

如果需要每日频率,将参数freq添加到date_range并转换to_datetimedate

import pandas as pd

rng = pd.date_range(start = pd.to_datetime('1/09/2016',  dayfirst = True), 
                    periods = 10, freq = 'D')
print (rng)
DatetimeIndex(['2016-09-01', '2016-09-02', '2016-09-03', '2016-09-04',
               '2016-09-05', '2016-09-06', '2016-09-07', '2016-09-08',
               '2016-09-09', '2016-09-10'],
              dtype='datetime64[ns]', freq='D')

【讨论】:

  • 那么就没有其他方法可以生成欧洲格式的日期了吗?
  • 不,日期时间转换为相同的方式(美国风格),如果需要转换,请使用此解决方案。
  • 但这是不正确的。因为我想要的开始日期是 2016 年 9 月 1 日,频率为 10 天。所以下一个日期应该是 2016 年 9 月 2 日。由于生成的日期本身是错误的,因此您建议的转换没有用。
  • 感谢您的编辑,但仍然无法解决我的问题。它显示为 2016 年 1 月 9 日,依此类推,但我想要 2016 年 9 月 1 日。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-14
  • 1970-01-01
  • 2018-06-05
  • 2018-12-23
  • 2020-11-14
  • 2019-08-08
相关资源
最近更新 更多