gpt4 book ai didi

python - 如何简化代码以检查 pandas 中的范围

转载 作者:太空宇宙 更新时间:2023-11-04 11:13:42 25 4
gpt4 key购买 nike

列为L、W、H、D,每列的范围从10到100,如果超过这个则为失败,否则为通过

我怎样才能简化这段代码。我尝试使用失败的 if 条件

def Target(FM):

if (df['L'] < 10 or df['L'] > 120):
return 'L-Fail'
else:
return 'Pass'


elif (df['W'] < 10 or df['W'] > 120):
return 'W-Fail'
else:
return 'Pass'


elif (df['H'] < 10 or df['H'] > 120):
return 'H-Fail'
else:
return 'Pass'


elif(df['D'] < 10 or df['D'] > 120):
return 'D-Fail'
else:
return 'Pass'


df['Remarks_Target'] = df.apply(Target, axis = 1)

L W H D Remarks

1 20 30 40 L-Fail
10 40 0 50 Pass
15 30 30 60 Pass
60 90 80 300 D-Fail
50 30 30 120 Pass
10 10 120 120 Pass
30 20 9 80 H-Fail
14 5 85 34 W-Fail

最佳答案

循环每列并通过 Series.between 设置新值, 不匹配数据的最后缺失值替换为 Series.fillna :

for c in ['L','W','H','D']:
m = df[c].between(10, 120, inclusive=True)
df.loc[~m, 'Remarks_Target'] = f'{c}-Fail'

df['Remarks_Target'] = df['Remarks_Target'].fillna('Pass')
print (df)
L W H D Remarks Remarks_Target
0 1 20 30 40 L-Fail L-Fail
1 10 40 0 50 H-Fail H-Fail
2 15 30 30 60 Pass Pass
3 60 90 80 300 D-Fail D-Fail
4 50 0 30 120 W-Fail W-Fail
5 10 10 120 120 Pass Pass

类似的选择:

df['Remarks_Target'] = 'Pass'
for c in ['L','W','H','D']:
m = df[c].between(10, 120, inclusive=True)
df.loc[~m, 'Remarks_Target'] = f'{c}-Fail'

关于python - 如何简化代码以检查 pandas 中的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57553084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com