wake-up-neo.com

Drucken Sie eine sehr lange Zeichenfolge vollständig in Pandas-Datenrahmen

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 verwenden
  • to_string verwenden
  • Eine der stackoverflow-Antworten schlug vor, die Spaltenbreite um Mithilfe der Pandas-Anzeigeoption zu erhöhen. Dies funktionierte ebenfalls nicht.
  • Ich habe auch nicht verstanden, wie set_printoptions mir helfen wird.

Alle Ideen geschätzt. Sieht sehr einfach aus, kann es aber nicht bekommen! 

56
Yantraguru

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'
85
joris

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

6
Rocketq

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'
4
fixxxer

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.

3
omnesia

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']]
2
bigbounty

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

1
user2428107