2016-12-27 3 views
3

(я думаю) У меня есть набор данных столбцов, представляющих datetime Интервал заменыResampling панды столбцы DATETIME

Колонны были преобразованы в DateTime с:

for col in df.columns: 
     df.rename({col: pd.to_datetime(col, infer_datetime_format=True)}, inplace=True) 

Затем мне нужно resample столбцы (год и месяц '2001-01') в помещение с помощью mean

Я попытался

df = df.resample('1q', how='mean', axis=1) 

DataFrame также имеет MULTINDEX набор ['RegionName', 'County']

Но я получаю ошибку:

Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'Index' 

ли проблема в функции to_datetime или в неправильных выборках?

+0

Вы можете разместить несколько первых строк вашего dataframe? Оператор 'df.rename' должен работать с ошибкой на основании предоставленной вами информации. –

ответ

3

(я думаю) вы переименовываете каждую голову столбца, а не делать целые столбцы объекта с DatetimeIndex

Попробуйте вместо этого:

df.columns = pd.to_datetime(df.columns) 

Затем запустите resample


примечание:
Я бы сделал это с period после преобразования в DatetimeIndex. Таким образом, вы получаете период в заголовке столбца, а не в конце даты квартала.

df.groupby(df.columns.to_period('Q'), axis=1).mean() 

демо

df = pd.DataFrame(np.arange(12).reshape(2, -1), 
        columns=['2011-01-31', '2011-02-28', '2011-03-31', 
          '2011-04-30', '2011-05-31', '2011-06-30']) 

df.columns = pd.to_datetime(df.columns) 

print(df.groupby(df.columns.to_period('Q'), axis=1).mean()) 

    2011Q1 2011Q2 
0  1  4 
1  7  10 
+0

Но значение столбцов - это другая информация (цена - я хочу, чтобы среднее значение за три месяца (три столбца). Я действительно хочу, чтобы голова была как DateTime, чтобы я мог заполнить месяцы в кварталах. –

+0

Нет. Вы правы Это сработало. –

Смежные вопросы