Zastanawiam się, czy istnieje prostszy, efektywny pod względem pamięci sposób wybierania podzbioru wierszy i kolumn z pandy DataFrame.Jak przekonwertować podzbiór danych Pandas DataFrame kolumn i wierszy na tablicę numpy?
Na przykład, biorąc pod uwagę to dataframe:
df = DataFrame(np.random.rand(4,5), columns = list('abcde')) print df a b c d e 0 0.945686 0.000710 0.909158 0.892892 0.326670 1 0.919359 0.667057 0.462478 0.008204 0.473096 2 0.976163 0.621712 0.208423 0.980471 0.048334 3 0.459039 0.788318 0.309892 0.100539 0.753992
że chodzi tylko tych rzędów, w których wartość kolumnie „c” jest większy niż 0,5, ale wystarczy kolumny „B” i „E” dla te rzędy.
To jest metoda, którą wymyśliłem - być może jest lepszy sposób "pandy"?
locs = [df.columns.get_loc(_) for _ in ['a', 'd']] print df[df.c > 0.5][locs] a d 0 0.945686 0.892892
Moim ostatecznym celem jest przekształcenie wynik numpy tablicy przejść do algorytmu regresji sklearn, więc użyję powyższy kod tak:
training_set = array(df[df.c > 0.5][locs])
... i peeves ja, odkąd skończyłem z ogromną tablicą w pamięci. Być może jest na to lepszy sposób?
Najbardziej elegancki. Jaka jest różnica między .ix a .loc? –
loc nie spróbuje użyć liczby (np. 1) jako argumentu pozycyjnego (i zamiast tego podniesie); zobacz główne pandy docs/wybranie danych – Jeff