Pandas: как создать индекс DateTime

#python-3.x #pandas #dataframe

#python-3.x #pandas #фрейм данных

Вопрос:

Существует фрейм данных Pandas как:

     year    month   count
0   2014    Jan     12
1   2014    Feb     10
2   2015    Jan     12
3   2015    Feb     10
  

Как создать индекс DateTime из «года» и «месяца», чтобы результат был :

               count
2014.01.31    12
2014.02.28    10
2015.01.31    12
2015.02.28    10
  

Комментарии:

1. В вашем исходном фрейме данных у вас нет day, так где же нам найти этот столбец?

Ответ №1:

Используйте to_datetime с DataFrame.pop для использования и удаления столбцов и добавления offsets.MonthEnd :

 dates = pd.to_datetime(df.pop('year').astype(str)   df.pop('month'), format='%Y%b')
df.index = dates   pd.offsets.MonthEnd()

print (df)
            count
2014-01-31     12
2014-02-28     10
2015-01-31     12
2015-02-28     10
  

Или:

 dates = pd.to_datetime(df.pop('year').astype(str)   df.pop('month'), format='%Y%b')
df.index = dates   pd.to_timedelta(dates.dt.daysinmonth - 1, unit='d')

print (df)
            count
2014-01-31     12
2014-02-28     10
2015-01-31     12
2015-02-28     10