繁体   English   中英

大于/小于 if 语句

[英]Greater/less than in if statement

仍在寻找答案,非常感谢您的帮助!

我正在处理一个包含有关汽车的不同类型数据的数据集,如果马力列的值大于 x 但小于 y,我想向 horsepower_score 列添加一个值。

我想添加值:

1 如果马力小于或等于 50

2 如果马力大于 50 但小于或等于 100

3 如果马力大于 100 但小于或等于 200

4 如果马力大于 200 但小于或等于 250

5 如果马力大于 250 但小于或等于 300

我尝试了几种不同的代码,但我无法使它们中的任何一个工作。

import pandas as pd
data=[[150,0],[275,0],[30,0],[90,0],[220,0]]
df=pd.DataFrame(data,columns=['horsepower','horsepower_score'])

if df['horsepower']<=50:
    df['horsepower_score']=1

if df['horsepower']>50 & <=100:
    df['horsepower_score']=2

if df['horsepower']>100 & <=200:
    df['horsepower_score']=2

if df['horsepower']>200 & <=250:
    df['horsepower_score']=4

if df['horsepower']>250 & <=300:
    df['horsepower_score']=5

所以我想要的结果是这样的:

马力 马力分数
150 3
275 5
30 1
90 2
220 4

更新:我仍在寻找解决方案。 唯一部分有效的答案是来自@Andreas 的答案,但是当代码运行多次时,该建议继续将数字添加到列中,我只想分配一次数字。

在 python 中,您可以链接这些条件,这样阅读起来非常好。

if 100 < df['horsepower'] < 200:
    df['horsepower_score']=3

或者您使用更传统的方式:

if df['horsepower'] > 100 & df['horsepower'] < 200:
    df['horsepower_score']=3

你必须把它分成两个单独的比较。 这些比较形成了一个 boolean 索引,您可以使用它来切片df

ix = df['horsepower']>100 & df['horsepower']<200
df.loc[ix, 'horsepower_score'] = 3

你写了

我想为 horsepower_score 添加一个值

因此,我假设 horsepower_score 中已经有值,并且您想将 3 添加到现有数字。 如果是这种情况,您可以使用以下方法:

df['horsepower_score'] += (df['horsepower'].ge(100) & df['horsepower'].le(200)) * 3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM