Source code for alpenglow.utils.DataframeData

import alpenglow.cpp as rs
import numpy as np
import sip


[docs]class DataframeData(rs.DataframeData): """Python wrapper around :py:class:`alpenglow.cpp.DataframeData`. """ def __init__(self, df, columns={}): super(rs.DataframeData, self).__init__() self.columns = columns self.position = 0 self.df = df users = np.array(self._get_def_valarray('user'), dtype=np.intc) items = np.array(self._get_def_valarray('item'), dtype=np.intc) ids = np.array(df.index, dtype=np.intc) scores = np.array(self._get_def_valarray('score', 'ones'), dtype=np.float64) times = np.array(self._get_def_valarray('time', 'arange'), dtype=np.float64) evals = np.array(self._get_def_valarray('eval', 'ones'), dtype=np.intc) categories = np.array(self._get_def_valarray('category', 'ones'), dtype=np.intc) self.add_recdats(users,items,ids,scores,times,evals,categories) super(rs.DataframeData, self).initialize() def _get_def_valarray(self, name, deftype=None): if(name in self.columns): return self.df[self.columns[name]].values if(name in self.df.columns and self.columns == {}): return self.df[name].values else: if(deftype == 'arange'): return np.arange(len(self.df)) elif(deftype == 'ones'): return np.ones(len(self.df)) else: raise ValueError('Nonexistent column ' + name)