Python 如何在终端上打印df而不丢失格式?

Python 如何在终端上打印df而不丢失格式?,python,shell,pandas,printing,dataframe,Python,Shell,Pandas,Printing,Dataframe,如何在终端中打印df而不丢失格式 假设我有这样一个df: In: df Out: TFs No Esenciales Genes regulados Genes Regulados Positivamente Genes Regulados Negativamente No Tentativo de genes a silenciar No Real de genes a silenciar No Tentativo de genes a inducir 146

如何在终端中打印df而不丢失格式

假设我有这样一个df:

In: df
Out:

    TFs No Esenciales  Genes regulados  Genes Regulados Positivamente  Genes Regulados Negativamente  No Tentativo de genes a silenciar  No Real de genes a silenciar  No Tentativo de genes a inducir
146              YdeO               20                             18                              2                              2                               2                               0
但是,当我使用print在shell中显示它时,它的格式变松了

In: print (df)
Out:
        TFs No Esenciales  Genes regulados  Genes Regulados Positivamente  \
146              YdeO               20                             18   

     Genes Regulados Negativamente  No Tentativo de genes a silenciar  \
146                              2                                 2   

     No Real de genes a silenciar  No Tentativo de genes a inducir  \
146                            2                               0   

     No Real de genes a inducir  Balance de genes  Balance real de genes  
146                          0                 2                      2  
如何使用打印,但保留格式

我期望的输出是:

In: print (df)
    Out:

    TFs No Esenciales  Genes regulados  Genes Regulados Positivamente  Genes Regulados Negativamente  No Tentativo de genes a silenciar  No Real de genes a silenciar  No Tentativo de genes a inducir
146              YdeO               20                             18                              2                              2                               2                               0
有一些显示器可用于控制如何打印
数据帧。您可能想要:

In [28]: pd.set_option('expand_frame_repr', False)

In [29]: pd.set_option('display.max_columns', 999)

对于您可能看到的格式设置,该控件有两个方面

  • 控制显示器可以处理的字符宽度

    • 这可以通过pandas选项
      display.width
      处理,也可以通过
      print pd.get\u选项('display.width')
      查看。默认值为
      80
  • 第二个控件是数据帧中要显示的列数

    • 这是通过pandas选项
      display.max\u columns
      处理的,可以通过
      print pd.get\u选项('display.max\u columns')
      看到。默认值为
      20
  • display.width
    让我们通过一个示例数据帧来探讨它的作用

    import pandas as pd
    
    df = pd.DataFrame([range(40)], columns=['ABCDE%d' % i for i in range(40)])
    
    print df # this is with default 'display.width' of 80
    
       ABCDE0  ABCDE1  ABCDE2  ABCDE3  ABCDE4  ABCDE5  ABCDE6  ABCDE7  ABCDE8  \
    0       0       1       2       3       4       5       6       7       8   
    
       ABCDE9   ...     ABCDE30  ABCDE31  ABCDE32  ABCDE33  ABCDE34  ABCDE35  \
    0       9   ...          30       31       32       33       34       35   
    
       ABCDE36  ABCDE37  ABCDE38  ABCDE39  
    0       36       37       38       39  
    
    [1 rows x 40 columns]
    
    pd.set\u选项('display.width',40)
    pd.set\u选项('display.width',120)
    这应该向右滚动

    print df
    
       ABCDE0  ABCDE1  ABCDE2  ABCDE3  ABCDE4  ABCDE5  ABCDE6  ABCDE7  ABCDE8  ABCDE9   ...     ABCDE30  ABCDE31  ABCDE32  \
    0       0       1       2       3       4       5       6       7       8       9   ...          30       31       32   
    
       ABCDE33  ABCDE34  ABCDE35  ABCDE36  ABCDE37  ABCDE38  ABCDE39  
    0       33       34       35       36       37       38       39  
    
    [1 rows x 40 columns]
    
    display.max\u列
    让我们使用
    pd.set\u选项('display.width,80)

    现在,让我们探讨一下
    'display.max\u columns'

    print df # default 20
    
       ABCDE0  ABCDE1  ABCDE2  ABCDE3  ABCDE4  ABCDE5  ABCDE6  ABCDE7  ABCDE8  \
    0       0       1       2       3       4       5       6       7       8   
    
       ABCDE9   ...     ABCDE30  ABCDE31  ABCDE32  ABCDE33  ABCDE34  ABCDE35  \
    0       9   ...          30       31       32       33       34       35   
    
       ABCDE36  ABCDE37  ABCDE38  ABCDE39  
    0       36       37       38       39  
    
    [1 rows x 40 columns]
    
    注意中间的椭圆。在这个数据帧中有40个列,为了得到20个最大列的显示计数,大熊猫采取了前10列<代码> 0:9以及最后10列<代码> 30:39 并在中间放置了一个椭圆。
    pd.set\u选项('display.max\u columns',30)
    注意,字符的宽度保持不变,但我有更多的列。熊猫占据了前15列
    0:14
    ,最后15列
    26:39

    要显示所有列,需要将此选项设置为至少与要显示的列数相同

    pd.set\u选项('display.max\u columns',40)
    没有省略号,将显示所有列

    将两个选项结合在一起 这一点很简单<代码>pd.set_选项('display.width',1000)
    使用1000来允许一些长的内容
    pd.set\u选项('display.max\u columns',1000)
    也允许宽数据帧

    print df
    
       ABCDE0  ABCDE1  ABCDE2  ABCDE3  ABCDE4  ABCDE5  ABCDE6  ABCDE7  ABCDE8  ABCDE9  ABCDE10  ABCDE11  ABCDE12  ABCDE13  ABCDE14  ABCDE15  ABCDE16  ABCDE17  ABCDE18  ABCDE19  ABCDE20  ABCDE21  ABCDE22  ABCDE23  ABCDE24  ABCDE25  ABCDE26  ABCDE27  ABCDE28  ABCDE29  ABCDE30  ABCDE31  ABCDE32  ABCDE33  ABCDE34  ABCDE35  ABCDE36  ABCDE37  ABCDE38  ABCDE39
    0       0       1       2       3       4       5       6       7       8       9       10       11       12       13       14       15       16       17       18       19       20       21       22       23       24       25       26       27       28       29       30       31       32       33       34       35       36       37       38       39
    
    使用您的数据 大警告 当你运行它时,你可能看不到你在这里所做的滚动魔术。这是因为您的终端可能没有向右滚动。下面是jupyter笔记本的屏幕截图。它看起来不正确,因为文本正在被包装。但是,在它包装的字符串中没有新行,当我将其复制并粘贴到stack overflow时,它会正确显示,这一事实证明了这一点


    您是否尝试过打印(repr(df))?是否可以将
    pd.set_option(…)
    写入某个文件,这样我们就不必每次都键入它们?@nos
    print df
    
       ABCDE0  ABCDE1  ABCDE2  ABCDE3  ABCDE4  ABCDE5  ABCDE6  ABCDE7  ABCDE8  \
    0       0       1       2       3       4       5       6       7       8   
    
       ABCDE9  ABCDE10  ABCDE11  ABCDE12  ABCDE13  ABCDE14   ...     ABCDE25  \
    0       9       10       11       12       13       14   ...          25   
    
       ABCDE26  ABCDE27  ABCDE28  ABCDE29  ABCDE30  ABCDE31  ABCDE32  ABCDE33  \
    0       26       27       28       29       30       31       32       33   
    
       ABCDE34  ABCDE35  ABCDE36  ABCDE37  ABCDE38  ABCDE39  
    0       34       35       36       37       38       39  
    
    [1 rows x 40 columns]
    
    print df
    
       ABCDE0  ABCDE1  ABCDE2  ABCDE3  ABCDE4  ABCDE5  ABCDE6  ABCDE7  ABCDE8  \
    0       0       1       2       3       4       5       6       7       8   
    
       ABCDE9  ABCDE10  ABCDE11  ABCDE12  ABCDE13  ABCDE14  ABCDE15  ABCDE16  \
    0       9       10       11       12       13       14       15       16   
    
       ABCDE17  ABCDE18  ABCDE19  ABCDE20  ABCDE21  ABCDE22  ABCDE23  ABCDE24  \
    0       17       18       19       20       21       22       23       24   
    
       ABCDE25  ABCDE26  ABCDE27  ABCDE28  ABCDE29  ABCDE30  ABCDE31  ABCDE32  \
    0       25       26       27       28       29       30       31       32   
    
       ABCDE33  ABCDE34  ABCDE35  ABCDE36  ABCDE37  ABCDE38  ABCDE39  
    0       33       34       35       36       37       38       39  
    
    print df
    
       ABCDE0  ABCDE1  ABCDE2  ABCDE3  ABCDE4  ABCDE5  ABCDE6  ABCDE7  ABCDE8  ABCDE9  ABCDE10  ABCDE11  ABCDE12  ABCDE13  ABCDE14  ABCDE15  ABCDE16  ABCDE17  ABCDE18  ABCDE19  ABCDE20  ABCDE21  ABCDE22  ABCDE23  ABCDE24  ABCDE25  ABCDE26  ABCDE27  ABCDE28  ABCDE29  ABCDE30  ABCDE31  ABCDE32  ABCDE33  ABCDE34  ABCDE35  ABCDE36  ABCDE37  ABCDE38  ABCDE39
    0       0       1       2       3       4       5       6       7       8       9       10       11       12       13       14       15       16       17       18       19       20       21       22       23       24       25       26       27       28       29       30       31       32       33       34       35       36       37       38       39
    
    print df
    
       TFs    No  Esenciales  Genes  regulados  Genes.1  Regulados  Positivamente  Genes.2  Regulados.1  Negativamente  No.1  Tentativo  de  genes   a  silenciar  No.2  Real  de.1  genes.1  a.1  silenciar.1  No.3  Tentativo.1  de.2  genes.2  a.2  inducir
    0  146  YdeO          20     18          2        2          2              0      NaN          NaN            NaN   NaN        NaN NaN    NaN NaN        NaN   NaN   NaN   NaN      NaN  NaN          NaN   NaN          NaN   NaN      NaN  NaN      NaN