微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何在不丢失格式的情况下在终端中打印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

解决方法:

DOCUMENTATION

对于您可能看到的格式,该控件有两件事情.

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

>这是使用pandas选项display.width处理的,可以通过print pd.get_option(‘display.width’)查看.认值为80.

>第二个控件是要显示的数据框中的列数.

>这是使用pandas选项display.max_columns处理的,可以通过print pd.get_option(‘display.max_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_option(‘display.width’,40)

print df

   ABCDE0  ABCDE1  ABCDE2  ABCDE3  \
0       0       1       2       3   

   ABCDE4  ABCDE5  ABCDE6  ABCDE7  \
0       4       5       6       7   

   ABCDE8  ABCDE9   ...     ABCDE30  \
0       8       9   ...          30   

   ABCDE31  ABCDE32  ABCDE33  ABCDE34  \
0       31       32       33       34   

   ABCDE35  ABCDE36  ABCDE37  ABCDE38  \
0       35       36       37       38   

   ABCDE39  
0       39  

[1 rows x 40 columns]

pd.set_option(‘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_columns

让我们用pd.set_option(‘display.width,80)将’display.width’放回80

现在让我们探索’display.max_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个最大列的显示计数,pandas取前10列0:9和最后10列30:39并在中间放置一个椭圆.

pd.set_option(‘display.max_columns’,30)

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]

注意字符的宽度保持不变但我有更多的列.大熊猫的前15列0:14和最后15列26:39.

显示所有列,您需要将此选项设置为至少与要显示的列数一样大.

pd.set_option(‘display.max_columns’,40)

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  

没有省略号,显示所有列.

将两种选择结合在一起

在这一点上非常简单. pd.set_option(‘display.width’,1000)使用1000来允许长时间. pd.set_option(‘display.max_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

使用您的数据

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

大洞穴

当你运行它时,你可能看不到你在这里做的滚动魔法.这是因为您的终端可能不会向右滚动.下面是jupyter-notebook的屏幕截图.它看起来不正确,因为正在包装文本.但是,在它包装的字符串中没有新行,这一点可以证明,当我将其复制并粘贴到堆栈溢出时,它会正确显示.

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐