Jak mogę wydrukować ramkę danych pandy jako ładną tabelę tekstową, jak poniżej?
+------------+---------+-------------+
| column_one | col_two | column_3 |
+------------+---------+-------------+
| 0 | 0.0001 | ABCD |
| 1 | 1e-005 | ABCD |
| 2 | 1e-006 | long string |
| 3 | 1e-007 | ABCD |
+------------+---------+-------------+
tabulate([list(row) for row in df.values], headers=list(df.columns))
aby pozbyć się indeksuprint(tabulate(df, **kwargs))
a nie tylkotabulate(df, **kwargs)
; ten ostatni pokaże wszystkie nowe linie\n
....showindex=False
Prostym podejściem jest wyjście w formacie html, co pandy robi po wyjęciu z pudełka :
źródło
pandy> = 1.0
Jeśli chcesz, aby wbudowana funkcja zrzucała twoje dane do jakiejś przeceny na githubie, teraz ją masz. Spójrz na
to_markdown
:Oto jak to wygląda na githubie:
Pamiętaj, że nadal musisz mieć
tabulate
zainstalowany pakiet.źródło
Jeśli korzystasz z notatnika Jupyter, możesz uruchomić następujący kod, aby interaktywnie wyświetlić ramkę danych w dobrze sformatowanej tabeli.
Ta odpowiedź opiera się na powyższej odpowiedzi to_html („temp.html”), ale zamiast tworzyć plik wyświetla dobrze sformatowaną tabelę bezpośrednio w notatniku:
Kredyt za ten kod z powodu przykładu w: Show DataFrame as table in iPython Notebook
źródło
Możesz użyć prettytable do renderowania tabeli jako tekstu. Sztuczka polega na przekonwertowaniu ramki data_frame na plik csv w pamięci i odczytaniu go przez prettytable. Oto kod:
źródło
prettytable
jest w dużej mierze uważany za porzucony. Szkoda też, bo to był fajny pakiet. :(prettytable
nie wydano go od 6 kwietnia 2013 r.tabulate
jest jego duchowym poprzednikiem i ma regularne wydania, ostatnie 24 stycznia 2019 r.Korzystałem z odpowiedzi Ofer przez jakiś czas i stwierdziłem, że w większości przypadków jest świetna. Niestety, z powodu niespójności między to_csv pandy a from_csv prettytable, musiałem użyć prettytable w inny sposób.
Jeden przypadek niepowodzenia to ramka danych zawierająca przecinki:
Prettytable podnosi błąd formularza:
Następująca funkcja obsługuje ten przypadek:
Jeśli nie zależy Ci na indeksie, użyj:
źródło
format_for_print()
wygląda na to , że funkcja nie drukuje indeksu ramki danych Pandas. Ustawiłem indeks za pomocą,df.index.name = 'index'
ale to nie drukuje kolumny indeksu z nazwą.Idąc za odpowiedzią Marka, jeśli z jakiegoś powodu nie używasz Jupytera, np. Chcesz przeprowadzić szybkie testy na konsoli, możesz użyć
DataFrame.to_string
metody, która działa od - przynajmniej - Pandas 0.12 (2014) r. .źródło
Może szukasz czegoś takiego:
źródło
Chciałem wydrukować ramkę danych na papierze, ale chciałem dodać wyniki i komentarze na tej samej stronie. Przerobiłem powyższe i nie mogłem dostać tego, czego chciałem. Skończyło się na użyciu instrukcji file.write (df1.to_csv ()) i file.write („,,, blah ,,,,,, blah”), aby umieścić moje dodatki na stronie. Kiedy otworzyłem plik csv, przeszedł prosto do arkusza kalkulacyjnego, który wydrukował wszystko we właściwym tempie i formacie.
źródło