逻辑运算:从数据框的列中选择两个值

时间:2019-05-13 23:46:56

标签: pandas dataframe indexing slice numpy-slicing

我有一个如下数据框,

df2 = pd.DataFrame({'a' : ['one', 'one', 'two', 'three', 'two', 'one', 'six'],
                    'b' : ['x', 'y', 'y', 'x', 'y', 'x', 'x'],
                    'c' : np.random.randn(7)})

我想从df2中选择数据,其中“ a”列等于“ 2”或“ 3”,我的代码如下,

df2[df2['a']=='two'or df2['a']=='three']

任何人都可以向我介绍为什么我的代码不起作用吗?

错误:系列的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()。

谢谢!

3 个答案:

答案 0 :(得分:2)

isin

slice=df2.loc[df2.a.isin(['one','two'])].copy()
slice
Out[797]: 
     a  b         c
0  one  x -0.064378
1  one  y  0.344902
2  two  y -0.080087
4  two  y  1.433515
5  one  x  1.065794

答案 1 :(得分:1)

使用|代替or

df2[(df2['a']=='two') | (df2['a']=='three')]

答案 2 :(得分:0)

您已经接近了,但是您需要做一些事情,首先使用|运算符指定or语句,其次将每个条件放在方括号中,

这应该有效

df2.loc[(df2['a']=='two') | (df2['a']=='three')]