Я пытался использовать «вложенную» пользовательскую функцию с pandas.eval(), но получаю ошибку AttributeError с арифметикой операторы, см. вопрос в конце.
Я получаю один и тот же результат с Dataframe.mul() и с *, где оба результата имеют тип pandas. core.series.Series:
Код: Выделить всё
import pandas as pd
_test = pd.DataFrame({'col1': [1, 2]})
_result_1 = _test["col1"] * 2 # type(_result_1) =
_result_2 = _test["col1"].mul(2) # type(_result_2) =
Код: Выделить всё
_test["new_col_1"] = _test.eval("col1 * 2")
Код: Выделить всё
def cumsum_function_test(input_series):
return input_series.cumsum()
_test["new_col_4"] = _test.eval("@cumsum_function_test(col1)")
Код: Выделить всё
def cumsum_function_test(input_series):
return input_series.cumsum()
_test["new_col_2"] = _test.eval("col1.mul(2).cumsum()")
_test["new_col_5"] = _test.eval("@cumsum_function_test(col1.mul(2))")
Но в этом случае я получаю ошибку AttributeError:
Код: Выделить всё
_test["new_col_6"] = _test.eval("@cumsum_function_test(col1 * 2)") # => AttributeError: 'BinOp' object has no attribute 'value'
Результат:

Подробнее здесь: https://stackoverflow.com/questions/723 ... hmetic-ope
Мобильная версия