@@ -191,8 +191,9 @@ def get_column_metadata(column, name, arrow_type, field_name):
191
191
}
192
192
193
193
194
- def construct_metadata (columns_to_convert , df , column_names , column_field_names ,
195
- index_levels , index_descriptors , preserve_index , types ):
194
+ def construct_metadata (columns_to_convert , df , column_names , index_levels ,
195
+ index_descriptors , preserve_index , types ,
196
+ column_field_names = None ):
196
197
"""Returns a dictionary containing enough metadata to reconstruct a pandas
197
198
DataFrame as an Arrow Table, including index columns.
198
199
@@ -211,6 +212,9 @@ def construct_metadata(columns_to_convert, df, column_names, column_field_names,
211
212
-------
212
213
dict
213
214
"""
215
+ if column_field_names is None :
216
+ column_field_names = column_names
217
+
214
218
num_serialized_index_levels = len ([descr for descr in index_descriptors
215
219
if not isinstance (descr , dict )])
216
220
# Use ntypes instead of Python shorthand notation [:-len(x)] as [:-0]
@@ -565,8 +569,8 @@ def dataframe_to_types(df, preserve_index, columns=None):
565
569
types .append (type_ )
566
570
567
571
metadata = construct_metadata (
568
- columns_to_convert , df , column_names , column_field_names , index_columns ,
569
- index_descriptors , preserve_index , types
572
+ columns_to_convert , df , column_names , index_columns , index_descriptors ,
573
+ preserve_index , types , column_field_names = column_field_names
570
574
)
571
575
572
576
return all_names , types , metadata
@@ -649,8 +653,8 @@ def _can_definitely_zero_copy(arr):
649
653
schema = pa .schema (fields )
650
654
651
655
pandas_metadata = construct_metadata (
652
- columns_to_convert , df , column_names , column_field_names , index_columns ,
653
- index_descriptors , preserve_index , types
656
+ columns_to_convert , df , column_names , index_columns , index_descriptors ,
657
+ preserve_index , types , column_field_names = column_field_names
654
658
)
655
659
metadata = deepcopy (schema .metadata ) if schema .metadata else dict ()
656
660
metadata .update (pandas_metadata )
0 commit comments