基于列值筛选DataFrame:获取值大于10的索引列表
解决DataFrame筛选指定值条件的索引问题
嘿,我来帮你搞定这个问题!你现在的代码返回带NaN的完整DataFrame,是因为直接对整个DataFrame应用了布尔条件,没有精准筛选符合要求的行并提取索引。
问题分析
你的原始代码 id_outlier = df1[df1 > 10] 会遍历DataFrame的每个元素,把不满足>10的位置替换成NaN,所以得到的是带空值的结构,而非你想要的索引列表。
正确解决方案
先明确你需要的是value大于10还是大于等于10(毕竟你期望的结果包含loc1,它的value是10),两种情况的代码如下:
情况1:获取value > 10的索引列表
# 筛选value列大于10的行,提取索引并转为列表 id_outlier = df1[df1['value'] > 10].index.tolist()
执行结果:['loc4', 'loc5']
情况2:获取value >= 10的索引列表(匹配你期望的输出)
# 筛选value列大于等于10的行,提取索引并转为列表 id_outlier = df1[df1['value'] >= 10].index.tolist()
执行结果:['loc1', 'loc4', 'loc5']
补充说明
- 必须指定具体列(这里是
df1['value'])来应用布尔条件,才能精准定位符合要求的行。 .index用于获取筛选后行的索引,.tolist()可以把索引对象转换成普通Python列表,方便后续使用。
内容的提问来源于stack exchange,提问作者Alex Trevylan
相关产品推荐
相关产品推荐

