Я относительно новичок в Python Decorator.
У меня есть эта функция декоратора.
def myTimer(func):
def wrapper(*args, **kargs):
t1 = time.time()
result = func(*args, **kargs)
t2 = time.time() - t1
print('Execution Time (function : {}) : {} sec'.format(func.__name__, t2))
return result
return wrapper
Это просто функция таймера.И у меня есть метод, который добавляет столбец на основе других столбцов.
@myTimer
def createID(dat):
dat['new'] = dat.apply(lambda x: '_'.join(map(str, x[4:8])), axis = 1)
return dat
Создается новый столбец, значения которого являются просто значениями другого столбца, объединенными разделителем '_'.
Теперь, если я определю две функции выше и запускаю ниже,
tdat2 = createID(tdat)
И тогда tdat2 вернётся правильно, но изменение вступит в силу и для tdat (исходный набор данных).Я имею в виду, что во-первых, у tdat есть 30 столбцов, а у tdat2 должно быть 31 столбец, и это хорошо, но у tdat также есть новый столбец.
Есть ли способ исправить это?Я попробовал ниже, и это работает отлично для меня, но я хочу, чтобы аргумент и возвращаемые значения были одинаковыми ('dat') из-за соглашения кода и т. Д.
@myTimer
def createID2(dat):
result = dat.copy()
result['new'] = result.apply(lambda x: '_'.join(map(str, x[4:8])), axis = 1)
return result
Заранее спасибо.