我希望将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(',')))