Estoy luchando con el aparentemente cosa muy simple.Tengo un pandas marco de datos que contiene cadena muy larga.

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

Ahora cuando trato de imprimir el mismo, no veo la cadena completa prefiero ver sólo una parte de la cadena.

He intentado siguientes opciones

  • utilizando print(df.iloc[2])
  • utilizando to_html
  • utilizando to_string
  • Uno de los stackoverflow respuesta sugiere aumentar el ancho de la columna
    el uso de los pandas opción de visualización, que no funciona bien.
  • Yo no se cómo set_printoptions me va a ayudar.

Cualquier idea apreciado. Parece muy simple, pero no es capaz de llegar!

InformationsquelleAutor Yantraguru | 2015-04-27

6 Comentarios

  1. 119

    Puede utilizar options.display.max_colwidth para especificar que usted quiere ver más en el defecto de representación:

    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

    Y, de hecho, si sólo se desea inspeccionar el valor, accediendo a ella (como un escalar, no como una fila como df.iloc[2] hace) también se puede ver la cadena 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'
    • df.iloc[2,0] — no funciona – voy a imprimir la primera y la tercera fila y recortado(
    • Funciona, si desea que el elemento de la tercera fila y la primera columna. Si usted desea algo más, por favor, abra una nueva pregunta.
    • Funciona, thx! Tengo una lista de los códigos postales en 1 columna y de uso se aplican a encontrar el máximo y el mínimo de la columna sabio uso de una función: df[‘zipcodeMinMax’] = df.loc[:,[‘zipcodeList’]].aplicar(createMinMaxZipcode, eje=1). Así que dentro de la función que yo hago to_string en la serie (stringZipcodes = zipcodeList.to_string(header=False, índice=False)). Las largas listas de zipcodes resultó en 3 puntos al final por ejemplo, «1111…». De hecho, esto no ocurre si selecciona los valores basados en el índice y la columna (como un escalar). Mi pregunta: ¿por qué este comportamiento? Configuración de las opciones de la pantalla a la influencia de aplicar que me parece extraño? Thx!
    • FYI he añadido esto para asegurarse de que el colwidth es suficiente para que la longitud de las cadenas de la serie: colwidth = 500 ep.set_option(‘max_colwidth’,colwidth) si df[‘zipcodeList’].str.len().max() > colwidth: raise ValueError («La anchura máxima es menor que la longitud máxima de la cadena de zipcodes’)
    • si usted tiene una pregunta diferente, mejor pedir uno nuevo en vez de comentar aquí
    • Esto no funciona para la mayor cadena como un párrafo con varias líneas.
    • maravillosa respuesta

  2. 12

    Uso pd.set_option('display.max_colwidth', -1) automático puedes incluir varias líneas y multi-células de la línea.

    Este es un gran recurso sobre cómo usar jupyters pantalla con los pandas al máximo.

  3. 9

    Otro, bastante más sencillo es llamar a la función de lista:

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

    No vale la pena mencionar, que no es bueno para el convento a la lista de la totalidad de las columnas, pero para una simple línea – ¿por qué no

    • Si usted ha estado delega su df basado en algunos criterios de búsqueda, y es de una sola línea, esto no funciona. Es la forma más sencilla, para la depuración de las necesidades de todos modos, y me gustaría que iba a funcionar, pero no sé por qué no. Usted obtiene un «*** KeyError: 0». Supongo que tiene que ver con ser como un «escalar» cuando hay un único valor.
  4. 6

    Otra manera más fácil de imprimir la totalidad de la cadena es llamada values en el dataframe.

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

    La Salida será

    [['one']
     ['two']
     ['This is very long string very long string very long string veryvery long string']]
  5. 4

    Es esto lo que usted tiene que hacer ?

    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'
  6. 2

    La forma en que me suelen tratar con la situación que usted describe es el uso de la .to_csv() método y escribir en la salida estándar:

    import sys
    
    df.to_csv(sys.stdout)

    Actualización: ahora debería ser posible utilizar sólo None en lugar de sys.stdout con un efecto similar!

    Este debe volcar todo el dataframe, incluyendo la totalidad de las cadenas. Usted puede utilizar el to_csv parámetros para configurar los separadores de columna, si el índice está impreso, etc. Va a ser bastante menos que representar correctamente a pesar de que.

    He publicado originalmente en respuesta a algo relacionado con la pregunta en Salida de datos de todas las columnas en un dataframe en pandas

Dejar respuesta

Please enter your comment!
Please enter your name here