目标-我总共有50条记录,需要找到6名薪水<;=50000和>;=48000的球员的所有可能组合。你知道吗
如果我只使用了大约20条记录,但在尝试将其应用于所有50条记录时,我不断遇到内存错误,那么下面的代码就可以工作了。我正在寻找一种方法来优化我的代码,要么只接受50k以下的组合,而不可能像我一样循环。你知道吗
示例数据(目前共有50条记录)-
ID Salary
0 11282489 11000
1 11282517 10800
2 11282479 10700
3 11282521 10200
4 11282483 10100
5 11282481 10000
当前代码-
comb = combinations(data['ID'], 6)
comb_list = list(comb)
df_list = []
for i in comb_list:
i = list(i)
if data.loc[data['ID'].isin(i)]['Salary'].sum() <= 50000 and data.loc[data['ID'].isin(i)]['Salary'].sum() >= 48000:
df_list.append(data.loc[data['ID'].isin(i)])
counter +=1
“组合列表”目前的结果是大约1500万个组合,这是主要问题。有没有比我现在做的更好的方法来应用薪资筛选?你知道吗
谢谢!你知道吗
你当然可以避免这种循环。你知道吗
找到所有的组合,将它们的id映射到salary,然后计算每个组合的总和。然后再把工资在48000到50000之间的组合作为子集
设置
代码
输出
(共有188531个这样的组合)。肯定会有更有效的解决办法。你知道吗
相关问题 更多 >
编程相关推荐