我有一些数据,我按一秒间隔发生分组。我在找到过滤低于特定阈值的计数的正确方法时遇到问题,例如我不想显示任何低于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
答案 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]