[英]How to print a df in Terminal without loosing format?
How can I print a df in the Terminal without loosing the format?如何在不丢失格式的情况下在终端中打印 df?
Lets say I have a df like this:假设我有一个这样的 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
But when I use print to display it in the shell, It looses its format但是当我使用 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
How can I use print, but keep the format?如何使用打印,但保留格式?
My desired output is:我想要的输出是:
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
There are 2 things going on that control for the formatting you may see.对于您可能会看到的格式,有两件事正在控制。
Controlling for the the character width that the display can handle.控制显示器可以处理的字符宽度。
display.width
and can be seen with print pd.get_option('display.width')
.display.width
处理的,可以通过print pd.get_option('display.width')
看到。 The default is 80
.80
。 The second control is the number of columns in the dataframe to display.第二个控件是数据框中要显示的列数。
display.max_columns
and can be seen with print pd.get_option('display.max_columns')
.display.max_columns
处理的,可以通过print pd.get_option('display.max_columns')
看到。 The default is 20
.20
。display.width
Let's explore what this does with a sample dataframe让我们用一个示例数据框来探索它的作用
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)
This should scroll to the right.这应该向右滚动。
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
Let's put 'display.width'
back to 80 with pd.set_option('display.width,80)
让我们用
pd.set_option('display.width,80)
把'display.width'
放回pd.set_option('display.width,80)
Now let's explore different values of 'display.max_columns'
现在让我们探索
'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]
Notice the ellipses in the middle.注意中间的椭圆。 There are 40 columns in this data frame, to get to a display count of 20 max columns, pandas took the first 10 columns
0:9
and the last 10 columns 30:39
and put an ellipses in the middle.此数据框中有 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]
Notice the width of characters stayed the same but I have more columns.注意字符的宽度保持不变,但我有更多的列。 pandas took the first 15 columns
0:14
and the last 15 columns 26:39
. pandas 取前 15 列
0:14
和最后 15 列26:39
。
To get all of your columns displayed, you need to set this option to be at least as big as the number of columns you want displayed.要显示所有列,您需要将此选项设置为至少与要显示的列数一样大。
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
No ellipses, all columns are displayed.没有省略号,显示所有列。
Pretty simple at this point.在这一点上很简单。
pd.set_option('display.width', 1000)
use 1000 to allow for something long. pd.set_option('display.width', 1000)
使用 1000 来允许较长的内容。 pd.set_option('display.max_columns', 1000)
also allowing for wide dataframes. 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
When you run this, you may not see this scrolling magic that you do here.当你运行它时,你可能看不到你在这里做的滚动魔法。 This is because your terminal probably doesn't scroll to the right.
这是因为您的终端可能不会向右滚动。 Below is a screen shot from jupyter-notebook.
下面是 jupyter-notebook 的屏幕截图。 It doesn't look right because the text is being wrapped.
它看起来不正确,因为文本正在被换行。 However, there are no new lines in the string where it wraps as evidenced by the fact that when I copied and pasted it to stack overflow, it displays appropriately.
但是,字符串中没有换行的新行,事实证明,当我将其复制并粘贴到堆栈溢出时,它会正确显示。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.