如何将Pandas中的Lambda转换函数改写为常规命名函数(如convert_time)?
把Lambda转换为命名函数的解决方案
没问题,我来帮你把这段Lambda表达式改成可读性更强的常规命名函数,这样后续维护或者扩展功能都会更方便。
先拆解下原来Lambda里的逻辑:对Projects列的每个字符串值,先用Duration()解析成时长对象,转成小时数的字符串后按逗号分割,把每个分割后的元素转成浮点数,最后求和得到总小时数。
下面是改写后的完整代码:
import pandas as pd import os import numpy as np from durations_nlp import Duration def convert_project_duration(project_str): # 解析时长字符串为Duration对象,转成小时数的字符串 hours_str = str(Duration(project_str).to_hours()) # 按逗号分割字符串,转成浮点数列表后求和 total_hours = sum(map(float, hours_str.split(','))) return total_hours # 应用命名函数到Projects列 df['Total Hours'] = df['Projects'].apply(convert_project_duration)
如果想要逻辑更直观,也可以把函数拆成更细的分步写法,方便后续调试或修改:
def convert_project_duration(project_str): # 解析输入的多段时长字符串 duration_obj = Duration(project_str) # 转换为小时数的字符串格式 hours_str = str(duration_obj.to_hours()) # 分割成单个时长的字符串列表 hour_parts = hours_str.split(',') # 逐个转换为浮点数并求和 total_hours = sum(float(part) for part in hour_parts) return total_hours
这样每一步的功能都清晰明了,不管是自己后续迭代,还是团队同事看代码,都能快速get到逻辑。
内容的提问来源于stack exchange,提问作者Manoj Singh
相关产品推荐
相关产品推荐

