Pandas – преобразование мультииндекса данных в объект datetime

Рассмотрим входной файл, b.dat :

 string,date,number a string,2/5/11 9:16am,1.0 a string,3/5/11 10:44pm,2.0 a string,4/22/11 12:07pm,3.0 a string,4/22/11 12:10pm,4.0 a string,4/29/11 11:59am,1.0 a string,5/2/11 1:41pm,2.0 a string,5/2/11 2:02pm,3.0 a string,5/2/11 2:56pm,4.0 a string,5/2/11 3:00pm,5.0 a string,5/2/14 3:02pm,6.0 a string,5/2/14 3:18pm,7.0 

Я могу группировать месячные итоги следующим образом:

 b=pd.read_csv('b.dat') b['date']=pd.to_datetime(b['date'],format='%m/%d/%y %I:%M%p') b.index=b['date'] bg=pd.groupby(b,by=[b.index.year,b.index.month]) bgs=bg.sum() 

Индекс сгруппированных итогов выглядит так:

 bgs number 2011 2 1 3 2 4 8 5 14 2014 5 13 bgs.index MultiIndex(levels=[[2011, 2014], [2, 3, 4, 5]], labels=[[0, 0, 0, 0, 1], [0, 1, 2, 3, 3]]) 

Я хотел бы переформатировать индекс в формат времени даты (дни могут быть в начале месяца).

Я пробовал следующее:

 bgs.index = pd.to_datetime(bgs.index) 

а также

 bgs.index = pd.DatetimeIndex(bgs.index) 

Оба терпят неудачу. Кто-нибудь знает, как я могу это сделать?

2 Solutions collect form web for “Pandas – преобразование мультииндекса данных в объект datetime”

Рассмотрим повторную выборку на «М», а не группировку по атрибутам DatetimeIndex:

 In [11]: b.resample('M', how='sum').dropna() Out[11]: number date 2011-02-28 1 2011-03-31 2 2011-04-30 8 2011-05-31 14 2014-05-31 13 

Примечание: вам нужно отказаться от NaN, если вы не хотите, чтобы между ними было время.

Вы можете создать столбец из индекса с помощью нужного вычисления даты, а затем установить его как индекс:

 bgs['expanded_date'] = bgs.index.map(lambda x: datetime.date(x.year, x.month, 1)) bgs.set_index('expanded_date') 
  • Подмена / упорядочение многоиндексных столбцов в пандах
  • Применение прописных букв к столбцу в кадре данных pandas
  • Как изменить форму Pandas Dataframe (номер строки с «L»)?
  • Можно ли сразу добавить несколько столбцов в pandas DataFrame?
  • список словарей, содержащих массивы и матрицы, в pandas dataframe
  • сравнивая массив dtyped со скаляром типа в Pandas DataFrame
  • Панды: заполнение отсутствующих значений по средней в каждой группе
  • dtype: integer, но loc возвращает float
  • Python - лучший язык программирования в мире.