weixin_53929854 2022-06-30 03:59 采纳率: 100%
浏览 139
已结题

python简化for loop

问题遇到的现象和发生背景

我想简化for loop

问题相关代码,请勿粘贴截图

import pandas as pd
import random

df_norms = pd.DataFrame()
df = pd.DataFrame({'Individual_Scale' : ['Scale A','Scale B','Scale C','Scale D','Scale E','Scale F'],
'Score' : [random.random()*100 for _ in range(6)]})

for scale in ['Scale A','Scale B','Scale C','Scale D','Scale E','Scale F']:
df_norms[scale] = sorted([random.random()*100 for _ in range(100)])
df = df.append(pd.Series([scale,random.random()*100], index = df.columns), ignore_index=True)

df_norms = df_norms.T.reset_index()
df_norms = df_norms.round(2)
df_norms

简化下面的for loop
def assesment_function(df,df_norms):
perc = []

for i in range(len(df)):
    for j in range(len(df_norms)):
        if df['Individual_Scale'][i] == df_norms.iloc[j,0]:
            k=1
            while df['Score'][i] >= df_norms.iloc[j,k]:
                if k == 100:
                    break
                else:
                    k += 1
            perc.append(k-1)
df['assesment'] = perc
return df

assesment_function(df,df_norms)

我想要达到的结果

img

  • 写回答

6条回答 默认 最新

  • 於黾 2022-06-30 08:09
    关注

    最外面两层for没法简化,你就是需要三层for
    但是中间的while可以简化

    #原始代码
    k=1
    while df['Score'][i] >= df_norms.iloc[j,k]:
        if k == 100:
            break
        else:
            k += 1
    perc.append(k-1)
    
    #简化后的代码
    for k in range(1,101):
        if df['Score'][i] < df_norms.iloc[j,k]:
            perc.append(k)
            break
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 7月15日
  • 已采纳回答 7月7日
  • 赞助了问题酬金50元 6月30日
  • 修改了问题 6月30日
  • 展开全部

悬赏问题

  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥60 许可证msc licensing软件报错显示已有相同版本软件,但是下一步显示无法读取日志目录。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加