如何让Python筛选并打印数据集中大于上限栅栏的具体数值?
解决方法
你的问题出在直接打印了布尔判断的结果,而没有用这个布尔条件去筛选原数据里的具体数值。
原代码问题分析
df['Hours'] >= greater_fence会生成一个和原列长度一致的布尔Series,直接打印它自然会输出一堆True/False。而且你写的if df['Hours'] >= greater_fence这种写法在pandas里不规范,会触发ValueError(因为Series无法直接作为if的判断条件)。
正确写法
要提取大于greater_fence的具体数值,直接用布尔索引筛选即可:
# Finding Outliers lower_fence = q1 - (1.5 * iqr) print('Lower Fence:', lower_fence) greater_fence = q3 + (1.5 * iqr) print('Greater Fence:', greater_fence) # 筛选并打印大于greater_fence的Hours数值 outlier_values = df[df['Hours'] > greater_fence]['Hours'] print(outlier_values) # 如果想逐个打印每个数值,用循环: for val in outlier_values: print(val)
补充说明
- 用
df['Hours'] > greater_fence作为索引,会直接提取原DataFrame中满足条件的行,再取Hours列就得到了所有符合要求的具体数值。 - 如果需求是包含等于
greater_fence的数值,把>改成>=即可。
内容的提问来源于stack exchange,提问作者Jacob St. John
相关产品推荐
相关产品推荐

