我想过滤掉那些少于 200 分钟观察值的日子。我的数据如下所示:
Time
2009-01-30 09:30:00 85.1100 100.1100
2009-01-30 09:39:00 84.9300 100.0500
2009-01-30 09:40:00 84.9000 100.0000
2009-01-30 09:45:00 84.9100 99.9400
2009-01-30 09:48:00 84.8100 99.9000
2009-01-30 09:55:00 84.7800 100.0000
... ...
2016-02-29 15:58:00 193.7200 24.8300
2016-02-29 15:59:00 193.4800 24.8700
2016-02-29 16:00:00 193.6100 24.8300
2016-03-01 09:30:00 195.2200 24.3099
2016-03-01 09:31:00 195.1000 24.3300
2016-03-01 09:32:00 195.1500 24.3100
2016-03-01 09:33:00 195.1100 24.3800
第一列是 DateTimeIndex,正如您可能注意到的那样,这是一个分钟数据,数据集中缺少一些分钟。我想避免对分钟数据进行重新采样和处理 NA 值,而是找到一种根据索引过滤天数的方法(天有更多 > 200 分钟的观察结果,<200 分钟的观察结果被丢弃)
最佳答案
假设 Time
是一列(不是索引),尝试如下操作:
df.ix[df.groupby(df['Time'].dt.date)['col1'].transform('count') > 200]
其中 col1
是列名
如果 Time
列是一个索引:
df.ix[df.groupby(df.index.date)['col1'].transform('count') > 200]
更新: 从 Pandas 0.20.1 开始 the .ix indexer is deprecated, in favor of the more strict .iloc and .loc indexers .
所以使用 df.loc[...]
而不是弃用的 df.ix[...]
关于python - Pandas , python 。如何根据观察次数过滤掉天数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37008935/