如何在不丢失格式的情况下在终端中打印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
我如何使用print,但保留格式?
我想要的输出是:
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
答案 0 :(得分:4)
对于您可能看到的格式,该控件有两件事情。
控制显示器可以处理的字符宽度。
display.width
处理的,可以使用print pd.get_option('display.width')
查看。默认值为80
。第二个控件是要显示的数据框中的列数。
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
让我们'display.width'
pd.set_option('display.width,80)
放回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列的显示数,大熊猫占据前10列0:9
和最后10列30:39
,并在中间放置一个省略号。 / p>
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的屏幕截图。它看起来不正确,因为正在包装文本。但是,字符串中没有换行的新行,因为当我将其复制并粘贴到堆栈溢出时,它会正确显示。
答案 1 :(得分:1)
可以使用显示options来控制DataFrame
的打印方式。你可能想要:
In [28]: pd.set_option('expand_frame_repr', False)
In [29]: pd.set_option('display.max_columns', 999)