我有一些数据按一秒间隔内的出现情况进行分组。我在寻找正确的方法来过滤掉低于特定阈值的计数时遇到问题,例如我不想显示计数低于 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
您可以尝试重命名列Date
to 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]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)