我可以在不使用自己的lambda函數的情況下接收由groupby操作產生的羣組的覆蓋時間段嗎?熊貓時間序列中的羣組時間跨度
目前我有下面的解決方案,但我想知道如果熊貓API不是已經有這種內置莫名其妙嗎? 要描述我在數據準備部分所做的工作:我的任務是查明何時布爾標誌爲True,特別是多長時間。我發現ndimage.label-ing是處理非連續數據塊的有效方法。但我願意接受任何其他酷炫的建議!
import pandas as pd
from scipy.ndimage import label
# data preparation
idx = pd.date_range(start='now', periods = 100, freq='min')
df= pd.DataFrame(randn(100), index=idx, columns=['data'])
df['mybool'] = df.data > 0
df['label'] = label(df.mybool)[0]
# my actual question:
df.groupby('label').apply(lambda x:x.index[-1] - x.index[0])
基本上,我從每個組的第一個減去最後的時間戳。 這導致:
label
0 01:37:00
1 00:00:00
2 00:01:00
3 00:01:00
4 00:01:00
5 00:02:00
6 00:00:00
7 00:10:00
8 00:00:00
9 00:01:00
10 00:02:00
11 00:00:00
12 00:01:00
13 00:04:00
14 00:02:00
15 00:01:00
16 00:00:00
17 00:00:00
18 00:00:00
19 00:01:00
20 00:00:00
21 00:01:00
22 00:02:00
23 00:00:00
24 00:00:00
dtype: timedelta64[ns]
重申一下我的問題:是否大熊貓API提供了一招,做同樣不使用應用lambda函數或者甚至沒有第一分組?
嘗試df.groupby(..)最後() - df.groupby(..)第() – Jeff
但去年()和第()不訪問。索引?它們提供布爾值的值,而不是它的時間戳值。 –