我想过滤掉几天,其中只有不到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分钟观察它被丢弃)
答案 0 :(得分:4)
假设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[...]