class_docstr: Base data storage for datahandler
  - pd.DataFrame is the default data storage format in Qlib datahandler
  - If users want to use custom data storage, they should define subclass inherited BaseHandlerStorage, and implement the following method
class_docstr_tok: ["Base","data","storage","for","datahandler","-","pd.DataFrame","is","the","default","data","storage","format","in","Qlib","datahandler","-","If","users","want","to","use","custom","data","storage",",","they","should","define","subclass","inherited","BaseHandlerStorage",",","and","implement","the","following","method"]
code: def from_df(df: pd.DataFrame):
      raise NotImplementedError("from_df method is not implemented!")
  
file_path: qlib/qlib/data/dataset/storage.py
imports: import pandas
  import numpy
  from .handler import DataHandler
  from typing import Union, List, Callable
  from .utils import get_level_index, fetch_df_by_index, fetch_df_by_col
label_desc: Use image node_id 2 for calling the BaseHandlerStorage obj's underlying member method code with example usage: obj.from_df(df) without return types