2017-09-02 96 views
1

我有一个只有两列的数据集。我想根据一列中的某些条件从中提取一小部分。考虑这个作为我的数据集。从数据框的列中选择特定值

A B 
1 10 
1 9 
2 11 
3 12 
3 11 
4 9 

假设我想只提取其中具有10 B值的那些行 - 12,所以我会得到一个新的数据集:

A B 
1 10 
2 11 
3 12 
3 11 

我尝试使用df.loc [DF [“B”] ==范围(10,12)]但它不工作,有人可以帮助我吗?

+0

基本上.'loc'在这里没有必要 – Wen

回答

6

您可以使用.between

In [1031]: df.loc[df.B.between(10, 12)] 
Out[1031]: 
    A B 
0 1 10 
2 2 11 
3 3 12 
4 3 11 

或者,isin

In [1032]: df.loc[df.B.isin(range(10, 13))] 
Out[1032]: 
    A B 
0 1 10 
2 2 11 
3 3 12 
4 3 11 

或者,query

In [1033]: df.query('10 <= B <= 12') 
Out[1033]: 
    A B 
0 1 10 
2 2 11 
3 3 12 
4 3 11 

或者,good'ol boolean

In [1034]: df.loc[(df.B >= 10) & (df.B <= 12)] 
Out[1034]: 
    A B 
0 1 10 
2 2 11 
3 3 12 
4 3 11 
+0

也许添加表彰一个'DF。 (df [“B”]> = 10)和[df [“B”]> = 10)和(df [“B”] <= 12),:]' – Wen

+0

and.'df [np.where &(df [“B”] <= 12),True,False)],抱歉,懒得写答案.. – Wen

0

另外还有一个(不使用.loc().query()),它看起来更像最初的(失败)的尝试:

df[df.B.isin(range(10,13))] 
相关问题