我的日期格式如下图所示:
{
"amount": 599400,
"date_cart_closed": "2015-03"
},
{
"amount": 575856,
"date_cart_closed": "2015-01"
},
{
"amount": 2216490,
"date_cart_closed": "2015-05"
}
我们的格式类似于2015-03
。基准日期从2011-01-01
开始固定,直到用户输入UNIX_TIMESTAMP
之类的1343287040
日期为止。
现在问题是我有开始日期和结束日期。在这个范围内,我必须填补空白。说实话,我没有2011-01
,2011-02
,2015-03
等。如何填补这些空白?有没有办法处理这种情况?
EDIT1:
似乎pandas
根据月份创建范围日期。我做了以下的生成月份:
pandas.date_range(start='20140101', end='20140501', freq='M')
其输出如下:
DatetimeIndex(['2014-01-31', '2014-02-28', '2014-03-31', '2014-04-30'], dtype='datetime64[ns]', freq='M', tz=None)
它以某种方式解决了我的问题,但我需要输出:2014-01
而不是2014-01-01
。有没有办法格式化输出?
答案 0 :(得分:3)
这是一个单行。您可以使用X-HTTP-Method-Override
将datetime对象转换为每月频率,然后使用numpy.astype('<M8[M]')
来获取unicode字符串。此操作是矢量化的,对于大型数据集来说非常快。
.astype(str)
答案 1 :(得分:1)
将您的日期转换为整数,自0年以来的月数:
def yearmonth_to_ordinal(date_string):
year, month = map(int, date_string.split('-'))
return year * 12 + (month - 1)
因此,2015-01变为24180,2015-03变为24182等。您现在可以创建序数范围。
要返回日期字符串,请使用模运算:
def ordinal_to_yearmonth(ordinal):
year, month = divmod(ordinal, 12)
return '{:04d}-{:02d}'.format(year, month + 1)
演示:
>>> yearmonth_to_ordinal('2015-05')
24184
>>> ordinal_to_yearmonth(yearmonth_to_ordinal('2015-05') + 7)
'2015-12'