求助:如何在Python Pandas中按条件为数据分配新分组值
Pandas按条件为数据分配分组值的优化方法
你需要在Pandas中按条件给数据分配新的分组值,现有通过多次条件索引赋值的实现方式,这里提供更简洁高效的优化方案。
原示例代码
import pandas as pd year = [1999, 2000, 2021, 2022, 2020] speed = [1.0, 0.5, 0.3, 2.8, 2.5 ] d = {'year': year, 'speed': speed} df = pd.DataFrame(d) df.speed[(df.speed >= 0.0) & (df.speed < 1.0)] = 1.0 df.speed[(df.speed >= 1.0) & (df.speed < 2.0)] = 2.0 df.speed[(df.speed >= 2.0) & (df.speed < 3.0)] = 3.0 print(df)
优化方案:使用pd.cut()函数
Pandas内置的pd.cut()专门用于区间分组赋值,代码更简洁,且便于维护(后续调整区间只需修改bins和labels即可)。
优化后的代码:
import pandas as pd year = [1999, 2000, 2021, 2022, 2020] speed = [1.0, 0.5, 0.3, 2.8, 2.5 ] d = {'year': year, 'speed': speed} df = pd.DataFrame(d) # 定义分组区间和对应输出值 bins = [0.0, 1.0, 2.0, 3.0] labels = [1.0, 2.0, 3.0] # 执行分组赋值,include_lowest=True确保左边界值被纳入第一个区间 df['speed'] = pd.cut(df['speed'], bins=bins, labels=labels, include_lowest=True) print(df)
预期输出
year speed 0 1999 2.0 1 2000 1.0 2 2021 1.0 3 2022 3.0 4 2020 3.0
内容的提问来源于stack exchange,提问作者Azam
相关产品推荐
相关产品推荐

