(
options, table, categories=None, ignore_metadata=False, types_mapper=None
)
| 792 | |
| 793 | |
| 794 | def table_to_dataframe( |
| 795 | options, table, categories=None, ignore_metadata=False, types_mapper=None |
| 796 | ): |
| 797 | all_columns = [] |
| 798 | column_indexes = [] |
| 799 | attributes = {} |
| 800 | pandas_metadata = table.schema.pandas_metadata |
| 801 | |
| 802 | if not ignore_metadata and pandas_metadata is not None: |
| 803 | all_columns = pandas_metadata['columns'] |
| 804 | column_indexes = pandas_metadata.get('column_indexes', []) |
| 805 | attributes = pandas_metadata.get('attributes', {}) |
| 806 | index_descriptors = pandas_metadata['index_columns'] |
| 807 | table = _add_any_metadata(table, pandas_metadata) |
| 808 | table, index = _reconstruct_index(table, index_descriptors, |
| 809 | all_columns, types_mapper) |
| 810 | ext_columns_dtypes = _get_extension_dtypes( |
| 811 | table, all_columns, types_mapper, options, categories) |
| 812 | else: |
| 813 | index = _pandas_api.pd.RangeIndex(table.num_rows) |
| 814 | ext_columns_dtypes = _get_extension_dtypes( |
| 815 | table, [], types_mapper, options, categories |
| 816 | ) |
| 817 | |
| 818 | _check_data_column_metadata_consistency(all_columns) |
| 819 | columns = _deserialize_column_index(table, all_columns, column_indexes) |
| 820 | |
| 821 | column_names = table.column_names |
| 822 | result = pa.lib.table_to_blocks(options, table, categories, |
| 823 | list(ext_columns_dtypes.keys())) |
| 824 | if _pandas_api.is_ge_v3(): |
| 825 | from pandas.api.internals import create_dataframe_from_blocks |
| 826 | |
| 827 | blocks = [ |
| 828 | _reconstruct_block( |
| 829 | item, column_names, ext_columns_dtypes, return_block=False) |
| 830 | for item in result |
| 831 | ] |
| 832 | df = create_dataframe_from_blocks(blocks, index=index, columns=columns) |
| 833 | df.attrs = attributes |
| 834 | |
| 835 | return df |
| 836 | else: |
| 837 | from pandas.core.internals import BlockManager |
| 838 | from pandas import DataFrame |
| 839 | |
| 840 | blocks = [ |
| 841 | _reconstruct_block(item, column_names, ext_columns_dtypes) |
| 842 | for item in result |
| 843 | ] |
| 844 | axes = [columns, index] |
| 845 | mgr = BlockManager(blocks, axes) |
| 846 | if _pandas_api.is_ge_v21(): |
| 847 | df = DataFrame._from_mgr(mgr, mgr.axes) |
| 848 | else: |
| 849 | df = DataFrame(mgr) |
| 850 | |
| 851 | df.attrs = attributes |
nothing calls this directly
no test coverage detected