我有一个如下数据框,
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()。
谢谢!
答案 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')]