2016-01-21 5 views
1

Итак, у меня есть dataframe формы: index - это дата, а затем у меня есть столбец, состоящий из np.arrays с формой 180x360. То, что я хочу сделать, - рассчитать недельное значение набора данных. Пример dataframe:Pandas resample numpy array

vika               geop   
1990-01-01 06:00:00 [[50995.954225, 50995.954225, 50995.954225, 50... 
1990-01-02 06:00:00 [[51083.0576138, 51083.0576138, 51083.0576138,... 
1990-01-03 06:00:00 [[51045.6321168, 51045.6321168, 51045.6321168,... 
1990-01-04 06:00:00 [[50499.8436192, 50499.8436192, 50499.8436192,... 
1990-01-05 06:00:00 [[49823.5114237, 49823.5114237, 49823.5114237,... 
1990-01-06 06:00:00 [[50050.5148846, 50050.5148846, 50050.5148846,... 
1990-01-07 06:00:00 [[50954.5188533, 50954.5188533, 50954.5188533,... 
1990-01-08 06:00:00 [[50995.954225, 50995.954225, 50995.954225, 50... 
1990-01-09 06:00:00 [[50628.1596088, 50628.1596088, 50628.1596088,... 

То, что я пытался до сих пор является простой

df = df.resample('W-MON') 

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

pandas.core.groupby.DataError: No numeric types to aggregate

Я попытался изменить тип данных столбца для списка, но он все равно не работает. Любая идея о том, как это сделать с повторной выборкой или любым другим способом?

+1

Сохранение Numpy массивов Внутри DataFrame не очень хорошая идея, как правило. Вы будете весьма ограничены в том, что вы можете сделать (как вы узнаете). Ваши данные, вероятно, хорошо подходят для 'xarray.Dataset', который строится поверх numpy и pandas: http://xarray.pydata.org/en/stable/data-structures.html, [resample] (http: // xarray.pydata.org/en/stable/time-series.html#resampling-and-grouped-operations) – TomAugspurger

ответ

1

Вы можете использовать Panel для представления 3D-данные:

import pandas as pd 
import numpy as np 

index = pd.date_range("2012/01/01", "2012/02/01") 
p = pd.Panel(np.random.rand(len(index), 3, 4), items=index) 
p.resample("W-MON") 
Смежные вопросы