You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 07:26:08