File tree Expand file tree Collapse file tree 1 file changed +5
-15
lines changed Expand file tree Collapse file tree 1 file changed +5
-15
lines changed Original file line number Diff line number Diff line change @@ -2385,32 +2385,22 @@ def _prepare_data(self):
23852385 data = self ._convert_strls (data )
23862386
23872387 # 3. Convert bad string data to '' and pad to correct length
2388- dtypes = []
2389- data_cols = []
2390- has_strings = False
2388+ dtypes = {}
23912389 native_byteorder = self ._byteorder == _set_endianness (sys .byteorder )
23922390 for i , col in enumerate (data ):
23932391 typ = typlist [i ]
23942392 if typ <= self ._max_string_length :
2395- has_strings = True
23962393 data [col ] = data [col ].fillna ('' ).apply (_pad_bytes , args = (typ ,))
23972394 stype = 'S{type}' .format (type = typ )
2398- dtypes .append (('c' + str (i ), stype ))
2399- string = data [col ].str .encode (self ._encoding )
2400- data_cols .append (string .values .astype (stype ))
2395+ dtypes [col ] = stype
2396+ data [col ] = data [col ].str .encode (self ._encoding ).astype (stype )
24012397 else :
2402- values = data [col ].values
24032398 dtype = data [col ].dtype
24042399 if not native_byteorder :
24052400 dtype = dtype .newbyteorder (self ._byteorder )
2406- dtypes .append (('c' + str (i ), dtype ))
2407- data_cols .append (values )
2408- dtypes = np .dtype (dtypes )
2401+ dtypes [col ] = dtype
24092402
2410- if has_strings or not native_byteorder :
2411- self .data = np .fromiter (zip (* data_cols ), dtype = dtypes )
2412- else :
2413- self .data = data .to_records (index = False )
2403+ self .data = data .to_records (index = False , column_dtypes = dtypes )
24142404
24152405 def _write_data (self ):
24162406 data = self .data
You can’t perform that action at this time.
0 commit comments