创建每月pandas DatetimeIndex

时间:2016-04-13 07:44:52

标签: python pandas datetimeindex

我有一个包含12个值的数据框,我想将其转换为DatetimeIndex类型

months = df['date'] #e.g. '2016-04-01'
idx = pd.date_range(months[0], months[11], freq='M')

但是,生成的DatetimeIndex长度仅为11,应为12 不确定是不是因为freq,它将日期转移到月末?

1 个答案:

答案 0 :(得分:2)

对我来说,使用periods生成工作:

print df
         date
0  2016-01-01
1  2016-02-01
2  2016-03-01
3  2016-04-02

print pd.date_range(df['date'].iloc[0], periods=12, freq='M')
DatetimeIndex(['2016-01-31', '2016-02-29', '2016-03-31', '2016-04-30',
               '2016-05-31', '2016-06-30', '2016-07-31', '2016-08-31',
               '2016-09-30', '2016-10-31', '2016-11-30', '2016-12-31'],
              dtype='datetime64[ns]', freq='M')

为什么缺少最后一个值 - check in the end

months = df['date'] 
print pd.date_range(months.iloc[0], months.iloc[3], freq='M')
DatetimeIndex(['2016-01-31', '2016-02-29', '2016-03-31'], dtype='datetime64[ns]', freq='M')
  

开始和结束日期严格包含在内。因此,如果指定,它将不会在这些日期之外生成任何日期。