熊猫过滤器计数

时间:2015-12-26 15:32:08

标签: python pandas

我有一些数据,我按一秒间隔发生分组。我在找到过滤低于特定阈值的计数的正确方法时遇到问题,例如我不想显示任何低于100的数据。我已经尝试了各种版本的filter / 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

1 个答案:

答案 0 :(得分:0)

您可以尝试将列Date重命名为Count,然后重命名行的子集,其中列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]