2015-04-27 13 views
29

Ich habe mit dem scheinbar sehr einfachen Ding zu kämpfen. Ich habe einen Pandas-Datenrahmen mit sehr langen Zeichenfolge.Drucken Sie die komplette Zeichenfolge eines Pandas Datenrahmens

Jetzt, wenn ich versuche, das gleiche zu drucken, sehe ich nicht die vollständige Zeichenfolge, sondern sehe nur einen Teil der Zeichenfolge.

ich folgende Möglichkeiten versucht

  • Drucken mit (df.iloc [2])
  • to_html
  • mit to_string mit
  • Einer der Antwort vorgeschlagen Stackoverflow Spaltenbreite von zu erhöhen mit Pandas Anzeigeoption, die auch nicht funktionierte.
  • Ich habe auch nicht bekommen, wie set_printoptions mir helfen wird.

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

+0

sollten Sie eine Antwort akzeptieren. –

Antwort

46

können Sie options.display.max_colwidth verwenden Sie angeben möchten mehr in der Standard-Darstellung sehen:

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 in der Tat, wenn Sie wollen einfach nur den einen Wert kontrollieren, indem sie den Zugriff auf (als Skalar , nicht als eine Zeile wie df.iloc[2] tut) sehen Sie auch die vollständige Zeichenfolge:

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' 
+0

df.iloc [2,0] - funktioniert nicht - Ich drucke erste und dritte Zeile und cutted ( – Rocketq

+0

Es funktioniert, wenn Sie Element der dritten Zeile und der ersten Spalte möchten. Wenn Sie etwas anderes möchten, öffnen Sie bitte ein neues Frage: – joris

+0

Es funktioniert, thx! Ich habe eine Liste von Postleitzahlen in 1 Spalte und verwenden Sie anwenden, um die min und max Spalte mit einer Funktion zu finden: df ['zipcodeMinMax'] = df.loc [:, ['zipcodeList' ]]. apply (createMinMaxZipcode, axis = 1). Also innerhalb der Funktion to_string auf der Reihe (stringZipcodes = zipcodeList.to_string (header = False, index = False)). Die längeren Listen der Postleitzahlen führte zu 3 Punkten bei der Ende zB "1111 ...".In der Tat passiert dies nicht, wenn Sie die Werte basierend auf Index und Spalte (als Skalar) auswählen. Meine Frage: Warum dieses Verhalten? Die Einstellung von Anzeigeoptionen zur Einflussnahme erscheint mir seltsam? Danke! – Wouter

4

Ist es das, was Sie vorhatten?

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' 
0

so wie ich oft mit der Situation, die Sie beschäftigen beschreiben, ist diezu verwendenVerfahren und schreiben zu stdout:

import sys 

df.to_csv(sys.stdout) 

Dies sollten den gesamten Datenrahmen Dump, einschließlich der Gesamtheit aller Strings. Sie können die to_csv-Parameter verwenden, um Spaltentrennzeichen zu konfigurieren, ob der Index gedruckt wird usw. Es wird weniger hübsch sein, als es richtig zu rendern.

ich dies in der Antwort ursprünglich geschrieben auf die etwas bezogene Frage an Output data from all columns in a dataframe in pandas

0

Ein weiterer, ziemlich einfacher Ansatz ist die Liste Funktion aufzurufen:

list(df['one'][2]) 
# output: 
['This is very long string very long string very long string veryvery long string'] 

Nein wert zu erwähnen, das ist nicht gut Kloster, um die ganze Spalten aufzulisten, aber für eine einfache Linie - warum nicht

Verwandte Themen