如何在Pandas中基于另一列的数值范围修改列值?
Pandas按数值范围修改DataFrame列值的正确方法
你当前代码里用and连接两个布尔条件会报错,因为Pandas的Series不能直接用Python原生的and/or运算符,得用向量化的逻辑运算符&(表示“且”),而且每个条件要单独加括号。
正确写法有两种:
方法一:使用&连接范围条件
import pandas as pd df = pd.read_csv("test.csv") # 用&连接两个条件,每个条件加括号 df.loc[(df.meters <= 30) & (df.meters >= 15), 'Class'] = 4
方法二:使用between()方法(更简洁)
Pandas提供了between()方法,可以直接判断数值是否在指定区间内,代码更简洁:
import pandas as pd df = pd.read_csv("test.csv") # between默认包含区间两端的值,等价于15 ≤ meters ≤30 df.loc[df.meters.between(15, 30), 'Class'] = 4
如果需要调整区间的开闭,可以用inclusive参数,比如只包含左端点:
df.loc[df.meters.between(15, 30, inclusive='left'), 'Class'] = 4
内容的提问来源于stack exchange,提问作者Austin Gyan Marbella
相关产品推荐
相关产品推荐

