Логическая операция: выберите два значения из столбца в кадре данных - PullRequest
1 голос
/ 14 мая 2019

У меня есть фрейм данных следующим образом,

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, где столбец «а» равен «два» или «три», мой код выглядит следующим образом,

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

Может ли кто-нибудь дать мне понять, почему мой код не работает?

Ошибка: Истинное значение Серии неоднозначно. Используйте a.empty, a.bool (), a.item (), a.any () или a.all ().

Заранее спасибо!

Ответы [ 3 ]

2 голосов
/ 14 мая 2019

это 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 голос
/ 14 мая 2019

Используйте | вместо or

df2[(df2['a']=='two') | (df2['a']=='three')]
0 голосов
/ 14 мая 2019

Вы близки, но вам нужно сделать несколько вещей, во-первых, используйте оператор | для указания оператора или, во-вторых, поместите каждое условие в скобки,

Это должно работать

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

...