2015-12-26 236 views
1

我有一些數據按一秒間隔發生分組。我遇到問題,找到正確的方法來篩選低於某個閾值的計數,例如我不想在100以下顯示任何內容。我嘗試過各種版本的過濾器/ lambda結構,但我無法在調用.count()方法之前或之後進行過濾。熊貓過濾器計數

df = pd.DataFrame({ 
    'Date': timestamps, 
    'Path': paths, 
    }) 

y = df.groupby([pd.Grouper(freq='1s',key='Date'), 'Path']) 
print(y.count()) 

輸出目前類似於此:

Date    Path 
2015-12-26 06:08:27 rawdata/file3    1 
        rawdata/file2   118 
2015-12-26 06:08:28 rawdata/file1   85 
        rawdata/file2   9796 

我想它看起來就像這樣:

Date    Path 
2015-12-26 06:08:27 rawdata/file2   118 
2015-12-26 06:08:28 rawdata/file2   9796 

回答

0

您可以嘗試重新命名列DateCount,然後行的子集,其中列Count是< 3(您可以將其更改爲值100):

print df 
        Date   Path 
0 2015-12-26 06:08:27 rawdata/file3 
1 2015-12-26 06:08:27 rawdata/file2 
2 2015-12-26 06:08:27 rawdata/file2 
3 2015-12-26 06:08:27 rawdata/file2 
4 2015-12-26 06:08:27 rawdata/file2 
5 2015-12-26 06:08:27 rawdata/file2 
6 2015-12-26 06:08:27 rawdata/file2 
7 2015-12-26 06:08:28 rawdata/file1 
8 2015-12-26 06:08:28 rawdata/file1 
9 2015-12-26 06:08:28 rawdata/file1 
10 2015-12-26 06:08:28 rawdata/file1 
11 2015-12-26 06:08:28 rawdata/file1 
12 2015-12-26 06:08:28 rawdata/file2 


y = df.groupby([pd.Grouper(freq='1s', key='Date'), 'Path']).count().rename(columns={'Date':'Count'}) 
print(y) 
            Count 
Date    Path     
2015-12-26 06:08:27 rawdata/file2  6 
        rawdata/file3  1 
2015-12-26 06:08:28 rawdata/file1  5 
        rawdata/file2  1 

print y[y.Count < 3] 
            Count 
Date    Path     
2015-12-26 06:08:27 rawdata/file3  1 
2015-12-26 06:08:28 rawdata/file2  1 

下一頁方法設置列名:

y = df.groupby([pd.Grouper(freq='1s', key='Date'), 'Path']).count() 
print(y) 
y.columns = ['Count'] 

print y[y.Count < 3]