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
|
restapi.data = df = new_df
|
||||||
|
|
||||||
|
|
||||||
if not df.empty:
|
restapi.dfh.dump()
|
||||||
print("<<< write hdf")
|
|
||||||
df.to_hdf("output.h5", key="data")
|
|
||||||
|
|
||||||
|
|
||||||
print(">>> end of streamlit run")
|
print(">>> end of streamlit run")
|
||||||
|
@ -8,7 +8,7 @@ from utils.st_utils import rerun
|
|||||||
class TableAPI:
|
class TableAPI:
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.dfh = DateFrameHolder()
|
self.dfh = DateFrameHolder("output.h5")
|
||||||
self.sid = None
|
self.sid = None
|
||||||
self.changed = True
|
self.changed = True
|
||||||
|
|
||||||
|
@ -3,9 +3,13 @@ import pandas as pd
|
|||||||
|
|
||||||
class DateFrameHolder:
|
class DateFrameHolder:
|
||||||
|
|
||||||
def __init__(self, df=None):
|
def __init__(self, fn):
|
||||||
self.df = df or pd.DataFrame()
|
self.fn = fn
|
||||||
# self.df = pd.DataFrame.from_records([dict(a=1, b=2, c=3)] * 4) #TODO: remove
|
self.df = try_load_df(fn)
|
||||||
|
|
||||||
|
def dump(self):
|
||||||
|
dump_non_empty_df(self.df, self.fn)
|
||||||
|
|
||||||
|
|
||||||
def append(self, data):
|
def append(self, data):
|
||||||
data = pd.DataFrame.from_records([data])
|
data = pd.DataFrame.from_records([data])
|
||||||
@ -15,6 +19,31 @@ class DateFrameHolder:
|
|||||||
self.df = pd.DataFrame()
|
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
|
from io import BytesIO
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user