Я пытаюсь назначить новый столбец существующему кадру данных pandas mydf
. Добавляемая серия является результатом оценки выражения, которое передается как строка. Выражение может содержать вызовы функций питона, например:Использование назначения в pandas с данными временных рядов и groupby
formula = 'myfunction(mydf.v1)'
myfunction
выглядит следующим образом
def myfunction(series):
return recursive_filter(series, 0.1)
Следующий код будет оценивать выражение и выполнить myfunction
и назначить столбец v2
для mydf
mydf.assign(v2 = eval(formula))
Однако мне нужно выполнить функцию Market
. Вывод должен выглядеть таблицу ниже
Market Date v1 v2
UK 2013-01-01 10 10.00
UK 2013-01-02 10 11.00
UK 2013-01-03 10 11.10
UK 2013-01-04 10 11.11
US 2013-01-01 10 10.00
US 2013-01-02 10 11.00
US 2013-01-03 10 11.10
US 2013-01-04 10 11.11
Я попытался следующий код (который я не уверен, что будет производить правильный результат ...)
mydf.groupby('CrossSection').apply(mydf.assign(v2 = eval(formula)))
Однако это приводит к этой ошибке
TypeError: 'DataFrame' objects are mutable, thus they cannot be hashed