@@ -222,7 +222,8 @@ def query_stream(self, query: str, org=None, params: dict = None) -> Generator['
222
222
async_req = False , _preload_content = False , _return_http_data_only = False )
223
223
return self ._to_flux_record_stream (response , query_options = self ._get_query_options ())
224
224
225
- def query_data_frame (self , query : str , org = None , data_frame_index : List [str ] = None , params : dict = None ):
225
+ def query_data_frame (self , query : str , org = None , data_frame_index : List [str ] = None , params : dict = None ,
226
+ use_extension_dtypes : bool = False ):
226
227
"""
227
228
Execute synchronous Flux query and return Pandas DataFrame.
228
229
@@ -234,6 +235,11 @@ def query_data_frame(self, query: str, org=None, data_frame_index: List[str] = N
234
235
If not specified the default value from ``InfluxDBClient.org`` is used.
235
236
:param data_frame_index: the list of columns that are used as DataFrame index
236
237
:param params: bind parameters
238
+ :param use_extension_dtypes: set to ``True`` to use panda's extension data types.
239
+ Useful for queries with ``pivot`` function.
240
+ When data has missing values, column data type may change (to ``object`` or ``float64``).
241
+ Nullable extension types (``Int64``, ``Float64``, ``boolean``) support ``panda.NA`` value.
242
+ For more info, see https://pandas.pydata.org/docs/user_guide/missing_data.html.
237
243
:return: :class:`~DataFrame` or :class:`~List[DataFrame]`
238
244
239
245
.. warning:: For the optimal processing of the query results use the ``pivot() function`` which align results as a table.
@@ -250,10 +256,12 @@ def query_data_frame(self, query: str, org=None, data_frame_index: List[str] = N
250
256
- https://docs.influxdata.com/flux/latest/stdlib/universe/pivot/
251
257
- https://docs.influxdata.com/flux/latest/stdlib/influxdata/influxdb/schema/fieldsascols/
252
258
""" # noqa: E501
253
- _generator = self .query_data_frame_stream (query , org = org , data_frame_index = data_frame_index , params = params )
259
+ _generator = self .query_data_frame_stream (query , org = org , data_frame_index = data_frame_index , params = params ,
260
+ use_extension_dtypes = use_extension_dtypes )
254
261
return self ._to_data_frames (_generator )
255
262
256
- def query_data_frame_stream (self , query : str , org = None , data_frame_index : List [str ] = None , params : dict = None ):
263
+ def query_data_frame_stream (self , query : str , org = None , data_frame_index : List [str ] = None , params : dict = None ,
264
+ use_extension_dtypes : bool = False ):
257
265
"""
258
266
Execute synchronous Flux query and return stream of Pandas DataFrame as a :class:`~Generator[DataFrame]`.
259
267
@@ -265,6 +273,11 @@ def query_data_frame_stream(self, query: str, org=None, data_frame_index: List[s
265
273
If not specified the default value from ``InfluxDBClient.org`` is used.
266
274
:param data_frame_index: the list of columns that are used as DataFrame index
267
275
:param params: bind parameters
276
+ :param use_extension_dtypes: set to ``True`` to use panda's extension data types.
277
+ Useful for queries with ``pivot`` function.
278
+ When data has missing values, column data type may change (to ``object`` or ``float64``).
279
+ Nullable extension types (``Int64``, ``Float64``, ``boolean``) support ``panda.NA`` value.
280
+ For more info, see https://pandas.pydata.org/docs/user_guide/missing_data.html.
268
281
:return: :class:`~Generator[DataFrame]`
269
282
270
283
.. warning:: For the optimal processing of the query results use the ``pivot() function`` which align results as a table.
@@ -289,7 +302,8 @@ def query_data_frame_stream(self, query: str, org=None, data_frame_index: List[s
289
302
290
303
return self ._to_data_frame_stream (data_frame_index = data_frame_index ,
291
304
response = response ,
292
- query_options = self ._get_query_options ())
305
+ query_options = self ._get_query_options (),
306
+ use_extension_dtypes = use_extension_dtypes )
293
307
294
308
def __del__ (self ):
295
309
"""Close QueryAPI."""
0 commit comments