Ich kämpfe mit der scheinbar sehr einfachen Sache. Ich habe einen Pandas-Datenrahmen mit sehr langer Zeichenfolge.
df = pd.DataFrame({'one' : ['one', 'two',
'This is very long string very long string very long string veryvery long string']})
Wenn ich jetzt versuche, das gleiche zu drucken, sehe ich nicht die vollständige Zeichenfolge, sondern nur einen Teil der Zeichenfolge.
Ich habe folgende Optionen ausprobiert
print(df.iloc[2])
verwenden to_html
verwendento_string
verwendenset_printoptions
mir helfen wird.Alle Ideen geschätzt. Sieht sehr einfach aus, kann es aber nicht bekommen!
Sie können mit options.display.max_colwidth
angeben, dass Sie mehr in der Standarddarstellung sehen möchten:
In [2]: df
Out[2]:
one
0 one
1 two
2 This is very long string very long string very...
In [3]: pd.options.display.max_colwidth
Out[3]: 50
In [4]: pd.options.display.max_colwidth = 100
In [5]: df
Out[5]:
one
0 one
1 two
2 This is very long string very long string very long string veryvery long string
Und wenn Sie nur den einen Wert untersuchen möchten, wird beim Zugriff auf diesen Wert (als Skalar und nicht als Zeile wie bei df.iloc[2]
) der vollständige String angezeigt:
In [7]: df.iloc[2,0] # or df.loc[2,'one']
Out[7]: 'This is very long string very long string very long string veryvery long string'
Ein anderer, ziemlich einfacher Ansatz ist das Aufrufen der Listenfunktion:
list(df['one'][2])
# output:
['This is very long string very long string very long string veryvery long string']
Kein Wert zu erwähnen, das ist nicht gut um zu konventieren, um die gesamten Spalten aufzulisten, aber für eine einfache Zeile - warum nicht
Wolltest du das?
In [7]: x = pd.DataFrame({'one' : ['one', 'two', 'This is very long string very long string very long string veryvery long string']})
In [8]: x
Out[8]:
one
0 one
1 two
2 This is very long string very long string very...
In [9]: x['one'][2]
Out[9]: 'This is very long string very long string very long string veryvery long string'
Verwenden Sie pd.set_option('display.max_colwidth', -1)
für automatische Zeilenumbrüche und mehrzeilige Zellen.
Dies ist eine großartige Ressource, wie man die Anzeige der Jupyters mit Pandas voll ausnutzt.
Eine andere einfachere Methode zum Drucken der gesamten Zeichenfolge besteht im Aufruf von values
für das Datenframe.
df = pd.DataFrame({'one' : ['one', 'two',
'This is very long string very long string very long string veryvery long string']})
print(df.values)
Die Ausgabe wird sein
[['one']
['two']
['This is very long string very long string very long string veryvery long string']]
Ich gehe oft mit der von Ihnen beschriebenen Situation um, indem Sie die .to_csv()
-Methode verwenden und stdout schreiben:
import sys
df.to_csv(sys.stdout)
Update: Es sollte jetzt möglich sein, None
anstelle von sys.stdout
mit ähnlichem Effekt zu verwenden!
Dies sollte den gesamten Datenrahmen einschließlich der Gesamtheit aller Zeichenfolgen sichern. Sie können die to_csv -Parameter verwenden, um Spaltentrennzeichen zu konfigurieren, ob der Index gedruckt wird usw. Dies ist jedoch weniger schön, als wenn Sie es richtig darstellen.
Ich habe dies ursprünglich als Antwort auf die etwas damit zusammenhängende Frage gepostet. Ausgabedaten aus allen Spalten eines Datenrahmens in Pandas