1168 Stimmen

Pretty-printen einer gesamten Pandas-Serie / DataFrame

Ich arbeite sehr viel mit Series und DataFrames auf dem Terminal. Der Standard-__repr__ für eine Series gibt eine reduzierte Stichprobe zurück, mit einigen Kopf- und Schwanzwerten, aber der Rest fehlt.

Gibt es eine integrierte Möglichkeit, die gesamte Series / DataFrame schön auszudrucken? Idealerweise sollte es eine richtige Ausrichtung unterstützen, vielleicht auch Grenzen zwischen den Spalten und vielleicht sogar eine Farbcodierung für die verschiedenen Spalten.

1480voto

tsvikas Punkte 13968

Sie können auch das option_context verwenden, mit einer oder mehreren Optionen:

with pd.option_context('display.max_rows', None, 'display.max_columns', None):  # weitere Optionen können ebenfalls angegeben werden
    print(df)

Dadurch werden die Optionen automatisch auf ihre vorherigen Werte zurückgesetzt.

Wenn Sie mit Jupyter-Notebook arbeiten, wird durch die Verwendung von display(df) anstelle von print(df) die Jupyter-Rich-Display-Logik verwendet (wie hier).

1034voto

Andrey Shokhin Punkte 11310

Es ist nicht notwendig, Einstellungen zu hacken. Es gibt einen einfachen Weg:

print(df.to_string())

194voto

Dan Allan Punkte 33695

Natürlich, wenn dies häufig vorkommt, erstellen Sie eine Funktion wie diese. Sie können es sogar konfigurieren, um jedes Mal zu laden, wenn Sie IPython starten: https://ipython.org/ipython-doc/1/config/overview.html

def print_full(x):
    pd.set_option('display.max_rows', len(x))
    print(x)
    pd.reset_option('display.max_rows')

Was die Färbung betrifft, finde ich es kontraproduktiv, sich zu sehr mit Farben zu beschäftigen, aber ich stimme zu, dass etwas wie bootstrap's .table-striped schön wäre. Sie könnten immer auch ein Problem erstellen, um diese Funktion vorzuschlagen.

179voto

lucidyan Punkte 2907

Nach dem Import von Pandas können Sie alternativ zum Verwenden des Kontext-Managers solche Optionen zum Anzeigen von gesamten Datenrahmen einstellen:

pd.set_option('display.max_columns', None)  # oder 1000
pd.set_option('display.max_rows', None)  # oder 1000
pd.set_option('display.max_colwidth', None)  # oder 199

Für eine vollständige Liste nützlicher Optionen, siehe:

pd.describe_option('display')

74voto

The Unfun Cat Punkte 26313

Verwenden Sie das Tabellenpaket:

pip install tabulate

Und betrachten Sie das folgende Beispiel zur Verwendung:

import pandas as pd
from io import StringIO
from tabulate import tabulate

c = """Chromosome Start End
chr1 3 6
chr1 5 7
chr1 8 9"""

df = pd.read_table(StringIO(c), sep="\s+", header=0)

print(tabulate(df, headers='keys', tablefmt='psql'))

+----+--------------+---------+-------+
|    | Chromosome   |   Start |   End |
|----+--------------+---------+-------|
|  0 | chr1         |       3 |     6 |
|  1 | chr1         |       5 |     7 |
|  2 | chr1         |       8 |     9 |
+----+--------------+---------+-------+

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X