【发布时间】:2021-11-21 15:52:41
【问题描述】:
问题 - 如何最好地尝试解决问题,因为嵌套循环会减慢进程并且没有给出预期的结果
可以使用 Hlookup 在 Excel 中完成相同的操作,但由于它是重复性练习,我需要将其自动化
我有下面的查找表。
lookup = pd.DataFrame({'Fruit': ['Apple','Mango','Guava'],'Rate':[20,30,25],
'Desc':['Apple rate is higher', 'Mango rate is higher', 'Guava rate is higher']})
我的目标是在我的输入数据中标记 desc,只要速率大于查找表中提到的速率
input_data = pd.DataFrame({'Id':[1,2,3,4,5], 'Apple':[24,27,30,15,18], 'Mango':[28,32,35,12,26],
'Guava':[20,23,34,56,23]})
预期输出数据样本 -
output_data = pd.DataFrame({'Id':[1,2,3,4,5], 'Apple':[24,27,30,15,18], 'Mango':[28,32,35,12,26],
'Guava':[20,23,34,56,23], 'Desc':['Apple rate is higher',
'Apple rate is higher, Mango rate is higher',
'Apple rate is higher, Mango rate is higher, Guava rate is higher',
'Guava rate is higher', '']})
我尝试使用循环并创建了两个列表,它为我提供了要插入的索引和值。我很困惑如何进行下一步,这似乎是一个非常慢的方法,因为我有多个嵌套循环
for i in range(0,len(lookup)):
var1 = lookup['Fruit'][i]
value1 = lookup['Rate'][i]
desc1 = lookup['Desc'][i]
for j in range(0, len(input_data.columns)):
var2 = input_data.columns[j]
a=[]
b=[]
if var1 == var2:
for k in range(0, len(input_data)):
if input_data[var2][k] > value1:
a.append(desc1)
b.append(k)
print (a)
print (b)
我的代码输出
['苹果率更高', '苹果率更高', '苹果率更高'] [0, 1, 2]
['芒果率更高', '芒果率更高'] [1, 2]
['番石榴率较高', '番石榴率较高'] [2, 3]
【问题讨论】:
标签: python pandas numpy loops if-statement