Python 按时间间隔分组,得到第一行满足条件
我有一个如下所示的数据帧:Python 按时间间隔分组,得到第一行满足条件,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我有一个如下所示的数据帧: ,columnname 2014-01-02 09:30:00-05:00,5 2014-01-02 09:31:00-05:00,6 2014-01-02 09:32:00-05:00,5 2014-01-02 09:33:00-05:00,71 2014-01-02 09:34:00-05:00,98 2014-01-02 09:35:00-05:00,1 2014-01-02 09:36:00-05:00,91 2014-01-02 09:37:00-05:0
,columnname
2014-01-02 09:30:00-05:00,5
2014-01-02 09:31:00-05:00,6
2014-01-02 09:32:00-05:00,5
2014-01-02 09:33:00-05:00,71
2014-01-02 09:34:00-05:00,98
2014-01-02 09:35:00-05:00,1
2014-01-02 09:36:00-05:00,91
2014-01-02 09:37:00-05:00,9
2014-01-02 09:38:00-05:00,1
2014-01-02 09:39:00-05:00,9
2014-01-02 09:40:00-05:00,1
2014-01-02 09:41:00-05:00,9
2014-01-02 09:42:00-05:00,1
2014-01-02 09:43:00-05:00,84
2014-01-02 09:44:00-05:00,1
2014-01-02 09:45:00-05:00,3
2014-01-02 09:46:00-05:00,1
2014-01-02 09:47:00-05:00,9
2014-01-02 09:48:00-05:00,2
2014-01-02 09:49:00-05:00,5
我需要找到,对于每5分钟的间隔,第一行大于10。
因此,结果将是:
,columnname
2014-01-02 09:30:00-05:00,71
2014-01-02 09:35:00-05:00,91
2014-01-02 09:40:00-05:00,84
2014-01-02 09:45:00-05:00,NaN
如何获取它?您可以先筛选大于10的列,然后使用and
首先
df[df['columnname'].gt(10)].resample('5min').first()
编辑:
使用
DataFrame.query
,DataFrame.GroupBy
和pd.Grouper
:
df.query('columnname>10').groupby(pd.Grouper(freq='5min')).first()
columnname
index
2014-01-02 09:30:00-05:00 71
2014-01-02 09:35:00-05:00 91
2014-01-02 09:40:00-05:00 84
你的意思是:
df[df['columnname'].gt(10)]。重新采样('5min')。首先()
?这很有效。你应该加上这个作为答案。你的预期输出是错误的,84在小时范围内10@Erfan谢谢我刚刚更正了它实际上最后一行(2014-01-02 09:45:00-05:00,NaN)不是showing@Alfonso_MA检查编辑
2014-01-02 09:30:00-05:00 71.0
2014-01-02 09:35:00-05:00 91.0
2014-01-02 09:40:00-05:00 84.0
2014-01-02 09:45:00-05:00 NaN
Freq: 5T, Name: columnname, dtype: float64
df.query('columnname>10').groupby(pd.Grouper(freq='5min')).first()
columnname
index
2014-01-02 09:30:00-05:00 71
2014-01-02 09:35:00-05:00 91
2014-01-02 09:40:00-05:00 84