基于条件从DataFrame中选择行-Pandas

11

DataFrame:

category  value   
A         25  
B         10  
A         15  
B         28  
A         18

需要选择满足以下条件的行:
1. category=A 并且值在10到20之间
2. 除A以外的其他类别。
1个回答

20

我认为你需要使用布尔索引

df1 = df[(df['category'] == 'A') & (df['value'].between(10,20))]
print (df1)
  category  value
2        A     15
4        A     18

然后:

df2 = df[(df['category'] != 'A') & (df['value'].between(10,20))]
print (df2)
  category  value
1        B     10

或者:

df3 = df[df['category'] != 'A']
print (df3)
  category  value
1        B     10
3        B     28

编辑:使用|将两个条件连接起来,表示,不要忘记在第一个条件上加上()

df1 = df[((df['category'] == 'A') & (df['value'].between(10,20))) | 
         (df['category'] != 'A')]
print (df1)
  category  value
1        B     10
2        A     15
3        B     28
4        A     18

我需要将结果放在一个数据框中,有什么高效的方法可以实现吗? - Ranjith
在一个查询中使用这两个条件来获取结果。结果将包含范围内的A类别以及所有其他类别的数据。 - Ranjith
预期的数据框 df 为:分类,值 B,10 A,15 B,28 A,18 - Ranjith
请检查编辑后的答案 - 需要添加 |,但第一个条件需要再加一个 () - jezrael
抱歉耽擱了。df[((df['category'] == 'A') & (df['value'].between(10,20))) | (df['category'] != 'A')]。這是正確的方法嗎? - Ranjith
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接