| 283 | @check_arg_types |
| 284 | @trace_user_frame |
| 285 | def table_to_pandas(table: Table, *, include_id: bool = True): |
| 286 | keys, columns = table_to_dicts(table) |
| 287 | series_dict = {} |
| 288 | for name in columns: |
| 289 | dtype = _dtype_to_pandas(table.schema.typehints()[name]) |
| 290 | if include_id: |
| 291 | series = pd.Series(columns[name], dtype=dtype) |
| 292 | else: |
| 293 | # we need to remove original keys, otherwise pandas will use them to create index |
| 294 | series = pd.Series(list(columns[name].values()), dtype=dtype) |
| 295 | series_dict[name] = series |
| 296 | index = keys if include_id else None |
| 297 | res = pd.DataFrame(series_dict, index=index) |
| 298 | return res |
| 299 | |
| 300 | |
| 301 | def _validate_dataframe(df: pd.DataFrame, stacklevel: int = 1) -> None: |