Динамическая карта Holoviews с существующим фреймом данных Pandas
У меня есть pandas dataframe, который я читаю из базы данных, со структурой, аналогичной
dt t1 t2 val1 val2
12 A C 12 33
13 A B 42 39
14 T C 12 09
и я пытаюсь сгенерировать DynamicMap из кадра данных. Проблема в том, что все примеры для динамических карт предназначены для генерации функций:
def gen_values(alpha, beta):
return np.random.rand()* alpha + beta
hv.DynamicMap(gen_values, kdims=['alpha', 'beta'])
и так далее. Проблема в том, что я хочу сделать что-то похожее, но с существующим фреймом данных, и если я пытаюсь передать это генерирующей функции, я получаю сообщение об ошибке пропуска kdims:
def gen_from_pandas(col1, col2, filter_1, filter_2, df):
df2 = df[(df[col1] == filter_1) & df[col2] == filter2]
return hv.Curve(df2['dt'], df2['val1'])
hv.DynamicMap(gen_from_pandas, kdims=['col1', 'col2'])
Есть ли способ сделать это?
1 ответ
Вы можете просто опустить ", df" из списка аргументов gen_from_pandas, если вы определили df до определения этой функции. Вместо этого вы сможете ссылаться на него во вложенном пространстве имен.
ETA: Если вы не можете обратиться к включенному пространству имен, просто сделайте закрытие:
df = pd.DataFrame(dict(dt=[12,13,14], t1=['A','A','T'], t2=['C','B','C'], val1=[12,42,12], val2=[33,39,9]))
class fngen(object):
def __init__(self, df):
self.df = df
def __call__(self, column):
return df[column]
fn = fngen(df)
fn("t1")