mirror of
https://github.com/fjosw/pyerrors.git
synced 2025-05-14 19:43:41 +02:00
refactor: refactored pandas serialize and deserialize functions.
This commit is contained in:
parent
f908b6328d
commit
e1a760a058
1 changed files with 36 additions and 11 deletions
|
@ -22,10 +22,7 @@ def dump_df(df, fname, gz=True):
|
||||||
If True, the output is a gzipped csv file. If False, the output is a csv file.
|
If True, the output is a gzipped csv file. If False, the output is a csv file.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
out = df.copy()
|
out = serialize_df(df)
|
||||||
for column in out:
|
|
||||||
if isinstance(out[column][0], (Obs, Corr)):
|
|
||||||
out[column] = out[column].transform(lambda x: create_json_string(x, indent=0))
|
|
||||||
|
|
||||||
if not fname.endswith('.csv'):
|
if not fname.endswith('.csv'):
|
||||||
fname += '.csv'
|
fname += '.csv'
|
||||||
|
@ -65,11 +62,39 @@ def load_df(fname, auto_gamma=False, gz=True):
|
||||||
warnings.warn("Trying to read from %s without unzipping!" % fname, UserWarning)
|
warnings.warn("Trying to read from %s without unzipping!" % fname, UserWarning)
|
||||||
re_import = pd.read_csv(fname)
|
re_import = pd.read_csv(fname)
|
||||||
|
|
||||||
for column in re_import.select_dtypes(include="object"):
|
return deserialize_df(re_import, auto_gamma)
|
||||||
if isinstance(re_import[column][0], str):
|
|
||||||
if re_import[column][0][:20] == '{"program":"pyerrors':
|
|
||||||
re_import[column] = re_import[column].transform(lambda x: import_json_string(x, verbose=False))
|
|
||||||
if auto_gamma is True:
|
|
||||||
re_import[column].apply(lambda x: x.gamma_method())
|
|
||||||
|
|
||||||
return re_import
|
|
||||||
|
def serialize_df(df):
|
||||||
|
"""Serializes all Obs or Corr valued columns into json strings according to the pyerrors json specification.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
df : pandas.DataFrame
|
||||||
|
DataFrame to be serilized.
|
||||||
|
"""
|
||||||
|
out = df.copy()
|
||||||
|
for column in out:
|
||||||
|
if isinstance(out[column][0], (Obs, Corr)):
|
||||||
|
out[column] = out[column].transform(lambda x: create_json_string(x, indent=0))
|
||||||
|
return out
|
||||||
|
|
||||||
|
|
||||||
|
def deserialize_df(df, auto_gamma=False):
|
||||||
|
"""Deserializes all pyerrors json strings into Obs or Corr objects according to the pyerrors json specification.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
df : pandas.DataFrame
|
||||||
|
DataFrame to be deserilized.
|
||||||
|
auto_gamma : bool
|
||||||
|
If True applies the gamma_method to all imported Obs objects with the default parameters for
|
||||||
|
the error analysis. Default False.
|
||||||
|
"""
|
||||||
|
for column in df.select_dtypes(include="object"):
|
||||||
|
if isinstance(df[column][0], str):
|
||||||
|
if df[column][0][:20] == '{"program":"pyerrors':
|
||||||
|
df[column] = df[column].transform(lambda x: import_json_string(x, verbose=False))
|
||||||
|
if auto_gamma is True:
|
||||||
|
df[column].apply(lambda x: x.gamma_method())
|
||||||
|
return df
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue