associate DataFrameHolder to file
This commit is contained in:
4
stand.py
4
stand.py
@ -47,9 +47,7 @@ if not new_df.equals(df) and not changed:
|
||||
restapi.data = df = new_df
|
||||
|
||||
|
||||
if not df.empty:
|
||||
print("<<< write hdf")
|
||||
df.to_hdf("output.h5", key="data")
|
||||
restapi.dfh.dump()
|
||||
|
||||
|
||||
print(">>> end of streamlit run")
|
||||
|
@ -8,7 +8,7 @@ from utils.st_utils import rerun
|
||||
class TableAPI:
|
||||
|
||||
def __init__(self):
|
||||
self.dfh = DateFrameHolder()
|
||||
self.dfh = DateFrameHolder("output.h5")
|
||||
self.sid = None
|
||||
self.changed = True
|
||||
|
||||
|
@ -3,9 +3,13 @@ import pandas as pd
|
||||
|
||||
class DateFrameHolder:
|
||||
|
||||
def __init__(self, df=None):
|
||||
self.df = df or pd.DataFrame()
|
||||
# self.df = pd.DataFrame.from_records([dict(a=1, b=2, c=3)] * 4) #TODO: remove
|
||||
def __init__(self, fn):
|
||||
self.fn = fn
|
||||
self.df = try_load_df(fn)
|
||||
|
||||
def dump(self):
|
||||
dump_non_empty_df(self.df, self.fn)
|
||||
|
||||
|
||||
def append(self, data):
|
||||
data = pd.DataFrame.from_records([data])
|
||||
@ -15,6 +19,31 @@ class DateFrameHolder:
|
||||
self.df = pd.DataFrame()
|
||||
|
||||
|
||||
def __repr__(self):
|
||||
head = self.fn + ":"
|
||||
line = "-" * len(head)
|
||||
df = str(self.df)
|
||||
return "\n".join((head, line, df))
|
||||
|
||||
|
||||
|
||||
def try_load_df(fn):
|
||||
try:
|
||||
df = pd.read_hdf(fn)
|
||||
print(f">>> loaded dataframe from {fn}")
|
||||
except FileNotFoundError:
|
||||
df = pd.DataFrame()
|
||||
print(">>> created empty dataframe")
|
||||
return df
|
||||
|
||||
def dump_non_empty_df(df, fn, key="data"):
|
||||
if df.empty:
|
||||
print("<<< skip dumping empty dataframe")
|
||||
return
|
||||
print(f"<<< dump dataframe to {fn}")
|
||||
df.to_hdf(fn, key)
|
||||
|
||||
|
||||
|
||||
from io import BytesIO
|
||||
|
||||
|
Reference in New Issue
Block a user