Я пытаюсь извлечь временные метки из моего почтового ящика, чтобы генерировать статистические данные с помощью Pandas. Мой код захватывает до 1000 писем и сохраняет метки времени в списке. Затем я передаю список в pd.DataFrame, который дает мне фреймворк с столбцом типа «время».Проблема с Pandas TimeGrouper - указатель «timeerror» для Typeerror
Я хочу использовать groupby и TimeGrouper для построения количества писем по будням, времени суток и т. Д., Поэтому я устанавливаю столбец timestamp в качестве индекса, но получаю TypeError: «Действителен только с DatetimeIndex , TimedeltaIndex или PeriodIndex, но получил экземпляр «Index». Я попытался использовать to_datetime, но это порождает другой объект TypeError: тип типа «время» не имеет len(). Из того, что я могу сказать, df [0] уже является объектом datetime, так почему он бросает ошибку при попытке использовать TimeGrouper?
import win32com.client
import pandas as pd
import numpy as np
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder(6)
messages = inbox.Items
message = messages.GetLast()
timesReceived = [message.SentOn]
for i in range(1000):
try:
message = messages.GetPrevious()
timesReceived.append(message.SentOn)
except(AttributeError):
break
df = pd.DataFrame(timesReceived);
df.set_index(df[0],inplace=True)
grouped = df.groupby(pd.TimeGrouper('M'))
TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'Index'
Edit: Добавление df.info() и df.head()
df.info()
<class 'pandas.core.frame.DataFrame'>
Index: 150 entries, 04/01/16 09:37:07 to 02/11/16 17:40:56
Data columns (total 1 columns):
0 150 non-null object
dtypes: object(1)
memory usage: 2.3+ KB
df.head()
0
0
04/01/16 09:37:07 04/01/16 09:37:07
04/01/16 04:34:30 04/01/16 04:34:30
04/01/16 03:02:14 04/01/16 03:02:14
04/01/16 02:15:12 04/01/16 02:15:12
04/01/16 00:16:27 04/01/16 00:16:27
Не могли бы вы поделиться выводами 'df.info()' и 'df.head()'? – Stefan
Конечно, я редактировал свой пост, чтобы включить его. Спасибо – thobru
'Индекс: 150 записей' предполагает, что ваши столбцы' index' должны быть преобразованы в 'datetime', используя' pd.to_datetime() 'first. 'df [0]' может выглядеть как 'datetime', но требует преобразования типов, try' df [0] = pd.to_datetime (df [0], format = '% m-% d-% Y% H:% M: % S ') 'перед установкой в индекс. – Stefan