несмотря на то, что есть два хорошие учебные пособия по как индексировать DataFrame в библиотеке Python pandas
, я все еще не могу выработать элегантный способ SELECT
для более чем одного столбца.
>>> d = pd.DataFrame({'x':[1, 2, 3, 4, 5], 'y':[4, 5, 6, 7, 8]})
>>> d
x y
0 1 4
1 2 5
2 3 6
3 4 7
4 5 8
>>> d[d['x']>2] # This works fine
x y
2 3 6
3 4 7
4 5 8
>>> d[d['x']>2 & d['y']>7] # I had expected this to work, but it doesn't
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Я нашел (что я думаю) довольно неэлегантный способ сделать это, как этот
>>> d[d['x']>2][d['y']>7]
Но это не очень, и он оценивается довольно низко для читаемости (я думаю).
Есть ли лучший, более Python-tastic способ?