2015-04-27 14 views
29

Sto lottando con la cosa apparentemente molto semplice. Ho un frame dati panda contenente una stringa molto lunga.Stampa la stringa completa di un dataframe panda

df = pd.DataFrame({'one' : ['one', 'two', 'This is very long string very long string very long string veryvery long string']}) 

Ora quando provo a stampare lo stesso, non vedo la stringa intera, ma vedo solo una parte della stringa.

ho provato le seguenti opzioni

  • utilizzando stampa (df.iloc [2])
  • utilizzando to_html
  • utilizzando to_string
  • Uno della risposta StackOverflow ha suggerito di aumentare la larghezza della colonna utilizzando opzione di visualizzazione panda, che non ha funzionato neanche.
  • Inoltre non ho capito come set_printoptions mi aiuterà.

Qualsiasi idea apprezzata. Sembra molto semplice, ma non è in grado di ottenerlo!

+0

si dovrebbe accettare una risposta. –

risposta

46

È possibile utilizzare options.display.max_colwidth per specificare che si desidera vedere di più nella rappresentazione di default:

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 

E in effetti, se si desidera solo per ispezionare il un valore, accedendo (come uno scalare , non come una fila come df.iloc[2] fa) si può vedere la stringa completa:

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] - non funziona - stamperò prima e terza riga e tagliata ( – Rocketq

+0

Funziona, se vuoi elemento di terza riga e prima colonna. Se vuoi qualcos'altro, per favore apri una nuova – joris

+0

Funziona, grazie! Ho una lista di codici postali in 1 colonna e usa apply per trovare la colonna min e max wise usando una funzione: df ['zipcodeMinMax'] = df.loc [:, ['zipcodeList' ]]. apply (createMinMaxZipcode, axis = 1). Quindi all'interno della funzione faccio to_string sulla serie (stringZipcodes = zipcodeList.to_string (header = False, index = False)). Gli elenchi più lunghi di zipcode hanno generato 3 punti al fine ad es. "1111 ...".In effetti ciò non accade se si selezionano i valori basati su indice e colonna (come scalare). La mia domanda: perché questo comportamento? Impostare le opzioni di visualizzazione per influenzare l'applicazione mi sembra strano? Grazie! – Wouter

4

È questo che intendevi fare?

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

il modo in cui ho spesso affrontare la situazione che lei descrive è quello di utilizzare il .to_csv() metodo e scrivere sullo standard output:

import sys 

df.to_csv(sys.stdout) 

Questo dovrebbe scaricare l'intero dataframe, compresa l'intera durata delle stringhe. È possibile utilizzare i parametri to_csv per configurare i separatori di colonne, indipendentemente dal fatto che l'indice sia stampato, ecc. Sarà comunque meno carino rispetto a renderlo correttamente.

ho postato originariamente in risposta al po-correlata delle interrogazioni Output data from all columns in a dataframe in pandas

0

altro, abbastanza semplice approccio è quello di chiamare elenco funzioni:

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

Non vale la pena di menzionare, che non è buono per convento per elencare le colonne intere, ma per una linea semplice - perché non

Problemi correlati