pandas使用pd.cut划分得分区间后筛选无结果是什么原因?
问题根因
pd.cut()执行后生成的av_score_range列为Categorical(分类)类型,而非字符串类型,直接和字符串'(2, 3]'做等值判断时类型不匹配,因此无法返回匹配结果。- 次要排查方向:确认
Av_Score字段的实际数值范围,是否确实存在大于2且小于等于3的数值。
正确筛选方案
你可以任选以下任意一种方式实现区间筛选:
- 用区间对象直接匹配分类值
import pandas as pd filt = merged_df_no_dob['av_score_range'] == pd.Interval(left=2, right=3, closed='right') merged_df_no_dob.loc[filt].head()
- 先把分类列转为字符串再匹配
filt = merged_df_no_dob['av_score_range'].astype(str) == '(2, 3]' merged_df_no_dob.loc[filt].head()
- 直接基于原始分数字段筛选,绕开分类列
filt = (merged_df_no_dob['Av_Score'] > 2) & (merged_df_no_dob['Av_Score'] <= 3) merged_df_no_dob.loc[filt].head()
内容的提问来源于stack exchange,提问作者Gimlore
相关产品推荐
相关产品推荐

