Open chriddyp opened 4 years ago
import dash from dash.dependencies import Input, Output import dash_table import dash_html_components as html import datetime import pandas as pd df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/gapminder2007.csv') df['Mock Date'] = [ datetime.datetime(2020, 1, 1, 0, 0, 0) + i * datetime.timedelta(hours=13) for i in range(len(df)) ] app = dash.Dash(__name__) def table_type(df_column): # Note - this only works with Pandas >= 1.0.0 if isinstance(df_column.dtype, pd.DatetimeTZDtype): return 'datetime', elif (isinstance(df_column.dtype, pd.StringDtype) or isinstance(df_column.dtype, pd.BooleanDtype) or isinstance(df_column.dtype, pd.CategoricalDtype) or isinstance(df_column.dtype, pd.PeriodDtype)): return 'text' elif (isinstance(df_column.dtype, pd.SparseDtype) or isinstance(df_column.dtype, pd.IntervalDtype) or isinstance(df_column.dtype, pd.Int8Dtype) or isinstance(df_column.dtype, pd.Int16Dtype) or isinstance(df_column.dtype, pd.Int32Dtype) or isinstance(df_column.dtype, pd.Int64Dtype)): return 'numeric' else: return 'any' app.layout = dash_table.DataTable( columns=[ {'name': i, 'id': i, 'type': table_type(df[i])} for i in df.columns ], data=df.to_dict('records'), filter_action='native', fixed_rows={'headers': True}, style_table={'height': 400}, style_data={ 'minWidth': '{}%'.format(100 / len(df.columns)), 'width': '{}%'.format(100 / len(df.columns)), 'maxWidth': '{}%'.format(100 / len(df.columns)) } ) if __name__ == '__main__': app.run_server(debug=True)
fyi @Marc-Andre-Rivet for when you are in the neighborhood
low priority IMO
fyi @Marc-Andre-Rivet for when you are in the neighborhood