将lambda函数转换为正则函数



我希望将lambda函数转换为常规函数,例如def convert_time()。有人能帮忙吗?

import pandas as pd
import os
import numpy as np
from durations_nlp import Duration

df['Total Hours'] = df['Projects'].apply(lambda x: sum(map(float,str(Duration(x).to_hours()).split(','))))
## Value in Projects df are in this format "1h,2h 30m,15m,20m,45m,35m"

您只需要传递传递给lambda的相同参数,然后只返回lambda内部的表达式:

def convert_time(x):
return sum(map(float,str(Duration(x).to_hours()).split(',')))

lambda x: sum(map(float,str(Duration(x).to_hours()).split(',')))表示,参数为x,返回值为表达式sum(map(float,str(Duration(x).to_hours()).split(',')))

然后你可以用新创建的函数替换lambda函数:

df['Total Hours'] = df['Projects'].apply(convert_time)

由于lambdas在允许的内部受到更多限制(即lambda内部的所有合法内容在def内部也是合法的),因此很容易将lambda转换为def,在这种情况下相当于

lambda x: sum(map(float,str(Duration(x).to_hours()).split(',')))

def convert_time(x):
return sum(map(float,str(Duration(x).to_hours()).split(',')))

最新更新