@@ -236,7 +236,7 @@ def _convert_dataframe_to_json(dataframe,
236236 field_columns = list (
237237 set (dataframe .columns ).difference (set (tag_columns )))
238238
239- dataframe .index = dataframe . index . to_datetime ()
239+ dataframe .index = pd . to_datetime (dataframe . index )
240240 if dataframe .index .tzinfo is None :
241241 dataframe .index = dataframe .index .tz_localize ('UTC' )
242242
@@ -288,6 +288,8 @@ def _convert_dataframe_to_lines(self,
288288 raise TypeError ('Must be DataFrame with DatetimeIndex or '
289289 'PeriodIndex.' )
290290
291+ dataframe = dataframe .rename (
292+ columns = {item : _escape_tag (item ) for item in dataframe .columns })
291293 # Create a Series of columns for easier indexing
292294 column_series = pd .Series (dataframe .columns )
293295
@@ -363,16 +365,18 @@ def _convert_dataframe_to_lines(self,
363365
364366 # Make an array of formatted field keys and values
365367 field_df = dataframe [field_columns ]
368+ # Keep the positions where Null values are found
369+ mask_null = field_df .isnull ().values
366370
367371 field_df = self ._stringify_dataframe (field_df ,
368372 numeric_precision ,
369373 datatype = 'field' )
370374
371- def format_line ( line ):
372- line = line [ ~ line . isnull ()] # drop None entries
373- return "," . join (( line . index + '=' + line . values ))
374-
375- fields = field_df .apply ( format_line , axis = 1 )
375+ field_df = ( field_df . columns . values + '=' ). tolist () + field_df
376+ field_df [ field_df . columns [ 1 :]] = ',' + field_df [
377+ field_df . columns [ 1 :]]
378+ field_df = field_df . where ( ~ mask_null , '' ) # drop Null entries
379+ fields = field_df .sum ( axis = 1 )
376380 del field_df
377381
378382 # Generate line protocol string
@@ -386,9 +390,6 @@ def _stringify_dataframe(dframe, numeric_precision, datatype='field'):
386390 # Prevent modification of input dataframe
387391 dframe = dframe .copy ()
388392
389- # Keep the positions where Null values are found
390- mask_null = dframe .isnull ().values
391-
392393 # Find int and string columns for field-type data
393394 int_columns = dframe .select_dtypes (include = ['integer' ]).columns
394395 string_columns = dframe .select_dtypes (include = ['object' ]).columns
@@ -433,7 +434,6 @@ def _stringify_dataframe(dframe, numeric_precision, datatype='field'):
433434
434435 dframe .columns = dframe .columns .astype (str )
435436
436- dframe = dframe .where (~ mask_null , None )
437437 return dframe
438438
439439 def _datetime_to_epoch (self , datetime , time_precision = 's' ):
0 commit comments