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