diff --git a/prometheus_pandas/query.py b/prometheus_pandas/query.py index c68bae2..3d20f68 100644 --- a/prometheus_pandas/query.py +++ b/prometheus_pandas/query.py @@ -51,6 +51,29 @@ def query(self, query: str, time: Optional[Timestamp] = None, timeout: Optional[ return to_pandas(self._do_query('api/v1/query', params)) + def query_dataframe(self, query: str, time: Optional[Timestamp] = None, timeout: Optional[Duration] = None) -> Matrix: + """ + Evaluates an instant query at a single point in time like query(), + but always returns a Dataframe with the value in column "value" and + prometheus labels used as additional columns. + + :param query: Prometheus expression query string. + :param time: Evaluation timestamp. Optional. + :param timeout: Evaluation timeout. Optional. + :return: Pandas DataFrame. + """ + params = {'query': query} + + if time is not None: + params['time'] = _timestamp(time) + + if timeout is not None: + params['timeout'] = _duration(timeout) + + + data = self._do_query('api/v1/query', params) + return pd.DataFrame(r['metric'] | {'value': np.float64(r['value'][1])} for r in data['result']) + def query_range(self, query: str, start: Timestamp, end: Timestamp, step: Union[Duration, float], timeout: Optional[Duration] = None) -> Matrix: """ Evaluates an expression query over a range of time.