根据列中的值过滤数据框

时间:2018-04-18 11:53:28

标签: python pandas

我有一个如下所示的数据框(df1):

       value 
loc1   10
loc2   1
loc3   2
loc4   12
loc5   14
loc6   3
loc7   4

我想获得一个值为> 10的所有id。的列表。

这是我的解决方案,但其格式不正确:

id_outlier = df1 [df1> 10]

           value 
    loc1   10
    loc2   NaN
    loc3   NaN
    loc4   12
    loc5   14
    loc6   NaN
    loc7   NaN

我想要的输出是:

loc1 
loc4 
loc5

1 个答案:

答案 0 :(得分:0)

首先,您忘记使用value属性。

id_outlier = df1[df1.value >= 10]

您还可以使用bracket表示法。

id_outlier = df1[df1['value'] >= 10]

正如我从您的问题中看到的,您需要的是返回由上述条件声明过滤的indexes列表。为此,您必须使用index属性。

id_outlier = df1[df1.value >= 10].index

输出

In[1]: id_outlier
Out[1]: Int64Index(['loc1', 'loc4', 'loc5'],
       dtype='int64', length=3)

如果你想获得一个numpy数组,只需使用values属性。

id_outlier = df1[df1.value >= 10].index.values

或使用tolist获取python列表。

id_outlier = df1[df1.value >= 10].index.tolist()