Source code for gaiaxpy.input_reader.dataframe_string_array_reader

import numpy as np
import pandas as pd

from gaiaxpy.core.generic_functions import str_to_array

# Avoid warning, false positive
pd.options.mode.chained_assignment = None


[docs] class DataFrameStringArrayReader(object): def __init__(self, content, array_columns): self.content = content.copy() self.array_columns = array_columns def _parse_parenthesis_arrays(self): df = self.content array_columns = self.array_columns for column in array_columns: df[column] = df[column].apply(lambda x: str_to_array(x)) return df def _parse_brackets_arrays(self): df = self.content array_columns = self.array_columns for column in array_columns: df[column] = df[column].map(np.array) return df
[docs] def read(self): def __get_enclosing_element(_df, _array_columns): for row in _df.to_dict('records'): for column in _array_columns: if isinstance(row[column], str): if row[column][0] in ['(', '[']: return row[column][0] else: continue df = self.content array_columns = self.array_columns enclosing = __get_enclosing_element(df, array_columns) if enclosing == '(': df = self._parse_parenthesis_arrays() elif enclosing == '[': df = self._parse_brackets_arrays() return df