问题描述
嗨,我正在尝试使用计费时间(表 2 即“AnalystMaster”)向多名员工收费(表 1 即“努力”)
分析师大师:
努力:
代码尝试:
# Python:
import pandas as pd
for i in range(0,len(Efforts["Analyst_Name"])):
for j in range(0,len(AnalystMaster["Analyst_Name"])):
if (Efforts["Analyst_Name"][i] == AnalystMaster["Analyst_Name"][j]):
Efforts["Cost"][i] =(Efforts["Hours"][i]*AnalystMaster["Charge_Rate"][j])
continue
帮我处理我收到错误的 python 脚本
解决方法
实现的线性搜索现在可以正常工作了。
df1 是分析师大师,df2 是努力
# Python:
import pandas as pd
def linear_search(values,search_for):
search_at = 0
value = df1["Charge Rate"].mean()
search_res = value
# Match the value with each data element
while search_at < len(values) and search_res is value:
if values[search_at] == search_for:
search_res = df1["Charge Rate"][search_at]
else:
search_at = search_at + 1
return search_res
randomList = []
for i in range(0,len(df2["Analyst_Name"])):
if df2["Analyst_Name"][i] in df1["Analyst_Name"].values:
randomList.append(df2["Hours"][i]*linear_search(df1["Analyst_Name"],df2["Analyst_Name"][i]))
else:
randomList.append(df2["Hours"][i]*linear_search(df1["Analyst_Name"],df2["Analyst_Name"][i]))
df2["Cost"] = randomList
如果 df1 列表中存在 df2 元素,上面的代码会在 df2 元素中执行 for 循环,然后调用线性搜索并返回分析师费用并乘以计费。否则不存在乘以计费小时的平均收费。