pomimo istnienia przynajmniej twogood tutoriale, jak indeksować DataFrame w pandas
biblioteki Pythona, ja wciąż nie może wypracować elegancki sposób SELECT
ing na więcej niż jedną kolumnę.Python Pandy: Boolean indeksowanie na wielu kolumnach
>>> 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()
znalazłem (co moim zdaniem jest) raczej nieeleganckiego sposób to zrobić, jak to
>>> d[d['x']>2][d['y']>7]
Ale to nie jest ładna, i uzyskuje wynik dość niskie dla czytelności (chyba).
Czy jest lepszy, bardziej smaczny w Pythonie sposób?
to działa, ale kończy się za pomocą operatorów python (zamiast numpy), a więc będzie znacznie wolniej – Jeff
, to miłe rozwiązanie. Podoba mi się fakt, że wyraźnie używa "i". Uściśla, że oceniane są dwa warunki. – LondonRob
Och, właśnie znalazłem [duplikat] (http://stackoverflow.com/questions/8916302/selecting-across-multiple-columns-with-python-pandas) tego pytania. Whoops. – LondonRob