2013-08-29 1 views
1

У меня есть проблема с биннингами с использованием панд! Вот упрощенный пример: У меня есть dataframe ДФPandas timeseries, битнинг на одном столбце и накопление времени, проведенного в ящиках

 time speed 
0 0.1  20 
1 0.2  20 
2 0.3  30 
3 0.4  30 
4 0.5  40 
5 0.6  40 
6 0.7  40 
7 0.8  40 
8 0.9  50 
9 1.0  50 
10 1.1  60 
11 1.2  70 
12 1.3  80 
13 1.4  80 
14 1.5  80 
15 1.6  80 
16 1.7  40 
17 1.8  40 
18 1.9  40 

Вот что я хочу сделать: Я хотел бы бен данные о скорости, как закромах = [0,20,40,60 , 80]. Я бы хотел, чтобы значения столбца времени были бинарны в соответствии с бит-биннинг. После этого я хотел бы накопить время в бункерах и построить гистограмму. Пожалуйста, помогите

+0

Вы пробовали играть с [ 'df.groupby'] (http://pandas.pydata.org/pandas-docs/stable/groupby.html#splitting-an-object- в-групп)? – ojdo

ответ

1
In [117]: binned_time = df.groupby(pd.cut(df.speed, bins=[0,20,40,60,80]))['time']                                               

In [118]: binned_time.sum() 
Out[118]: 
speed 
(0, 20]  0.30 
(20, 40] 3.30 
(40, 60] 1.11 
(60, 80] 1.24 
Name: time, dtype: float64 
+0

Почти там !!, я должен был сказать, что временной столбец является временным рядом. Так есть способ накопить время, проведенное в каждом бункере? – jonas

+0

Это зависит от того, как представлено время. Если в качестве временных меток, то я предполагаю, что вы хотите вычесть наивысшую и самую низкую метку времени в корзине. В случае, когда time columnn является объектом timedelta, sum() все еще может использоваться. –

+0

У меня есть сигнал скорости, который меняется со временем, короткое обновленное описание выше. Я не уверен, что если вычесть наивысшее значение с самого низкого в этом бункере, это даст мне накопленное время в этом бункере скорости. – jonas